Java---异常

文章目录

    • 1. 异常概述
    • 2. try...catch
    • 3. Throwable成员方法
    • 4. 编译时异常和运行时异常区别
    • 5. 异常处理之throws
    • 6. 自定义异常
    • 7. throws和throw的区别


1. 异常概述

 1. 异常:就是程序中出现了不正常的情况。

 2. Error:严重问题,不需要处理。Exception:称为异常类,它表示程序本身可以处理的问题。RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码。非RuntimeException:编译期就必须处理的,否则程序不能通过编译,就更不能运行了。

在这里插入图片描述

 3. JVM处理异常的默认方案:(1) 把异常的名称、异常的原因以及异常出现的位置等信息输出在了控制台。 (2) 程序终止运行。

2. try…catch

 1. 如果程序出现了问题,我们需要自己处理,有两种方案:(1) try...catch。 (2) throws

 2. try...catch执行流程:程序从try里面的代码开始执行;出现异常时会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统;当Java运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理;执行完毕之后,程序还可以继续往下执行。
在这里插入图片描述

 3. 代码块举例:

public class Demo {
    public static void main(String[] args) {
        System.out.println("开始");
        method();
        System.out.println("结束");
    }
    public static void method() {
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[3]);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("你访问的数组的索引不存在");
        }
    }
}

在这里插入图片描述

public class Demo {
    public static void main(String[] args) {
        System.out.println("开始");
        method();
        System.out.println("结束");
    }
    public static void method() {
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[3]);
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        }
    }
}

在这里插入图片描述

3. Throwable成员方法

方法名说明
public String getMessage()返回此throwable的详细信息字符串
public String toString()返回此可抛出的简短描述
public void printStackTrace()把异常的错误信息输出在控制台
public class Demo {
    public static void main(String[] args) {
        System.out.println("开始");
        method();
        System.out.println("结束");
    }
    public static void method() {
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[3]);
        } catch (ArrayIndexOutOfBoundsException e) {
            //e.printStackTrace();
            System.out.println(e.getMessage()); //输出:3
            System.out.println(e.toString()); //输出:java.lang.ArrayIndexOutOfBoundsException: 3
        }
    }
}

4. 编译时异常和运行时异常区别

 Java的异常分为两大类:编译时异常和运行时异常,也称为受检异常和非受检异常。所有的RumtimeException类及其子类被称为运行时异常,其他的异常都是编译时异常。

  • 编译时异常:必须显示处理,否则程序就会报错,无法通过编译。
  • 运行时异常:无须显示处理,也可以和编译异常时一样处理。

5. 异常处理之throws

 1. 虽然我们通过try...catch...可以对异常进行处理,但是并不是所有的情况我们都有权限进行异常的处理。也就是说,有时候可能出现的异常我们处理不了。针对这种情况,Java提供了throws的处理方案。

 2. 格式:throws 异常类名。注意:这个格式是跟在方法的括号后面的。

 3. 代码块举例。可以看到抛出异常后不会继续往下处理。

public class Demo {
    public static void main(String[] args) {
        System.out.println("开始");
        method();
        System.out.println("结束");
    }
    public static void method() throws ArrayIndexOutOfBoundsException {
        int[] arr = {1, 2, 3};
        System.out.println(arr[3]);
    }
}

在这里插入图片描述

6. 自定义异常

 1. 格式和范例:

在这里插入图片描述

在这里插入图片描述

 2. 代码块举例:

public class ScoreException extends Exception{
    public ScoreException() {};
    public ScoreException(String message){
        super(message);
    }
}

public class Teacher {
    public void CheckScore(int score) throws ScoreException{
        if(score<0||score>100)
            throw new ScoreException("你给的分数有误,应该在0-100之间");
        else
            System.out.println("分数正常");
    }
}

import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入分数:");
        int score=sc.nextInt();

        Teacher t=new Teacher();
        try {
            t.CheckScore(score);
        } catch (ScoreException e) {
            e.printStackTrace();
        }
    }

}

在这里插入图片描述

7. throws和throw的区别

throwsthrow
用在方法声明后面,跟的是异常类名用在方法体内,跟的是异常对象名
表示抛出异常,由该方法的调用者来处理表示抛出异常,由方法体内的语句处理
表示出现异常的一种可能性,并不一定会发生这些异常执行throw一定抛出了某种异常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/218572.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Java SSM框架实现美食推荐管理系统项目【项目源码+论文说明】

基于java的SSM框架实现美食推荐管理系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&a…

数智化招采平台档案管理的功能、价值与亮点

2005年4月&#xff0c;《中华人民共和国电子签名法》正式实施&#xff0c;明确电子签名与手写签名具有同等的法律效力。 2013年5月&#xff0c;《电子招标投标办法》正式实施&#xff0c;明确电子招标投标交易平台应当具备电子归档功能。 2021年1月&#xff0c;《中华人民共和…

web前端开发HTML/css用户登录界面

代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"> <head> <meta http-equi…

基于Java SSM框架实现农产品供销服务系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现农产品供销服务系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识…

使用cmake构建的工程的编译方案

1、克隆项目工程 2、进入到工程目录 3、执行 mkdir build && cd build 4、执行 cmake .. 5、执行 make 执行以上步骤即可完成对cmake编写的工程进行编译 &#xff0c;后面只需执行你的编译结果即可 $ git clone 你想要克隆的代码路径 $ cd 代码文件夹 $ mkdir bu…

【Linux】编译器-gcc/g++与调试器-gdb的使用

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.gcc/g语法 2.gcc的使用及…

数据结构——二叉树(相关术语、性质、遍历过程)

遍历操作 二叉树的层次遍历-CSDN博客 二叉树的基本操作-CSDN博客 二叉树的先序遍历非递归实现-CSDN博客 后序遍历的非递归方式实现-CSDN博客 二叉树&#xff1a;已知先序中序求后序或者其他&#xff08;秒解&#xff09;-CSDN博客 因为之前发过一遍&#xff0c;我就不复制…

GEOVIS Earth Brain:LANDSAT_5/02/T1/RAW数据集

简介&#xff1a; LANDSAT_5/02/T1/RAW数据集是一种由美国国家航空航天局&#xff08;NASA&#xff09;和美国地质调查局&#xff08;USGS&#xff09;联合发布的遥感卫星影像数据集。它的数据格式为RAW&#xff0c;即未经过数据处理的原始数据。这个数据集是由LANDSAT 5号卫星…

Kubernetes安装ingress-nginx

Kubernetes安装ingress-nginx 1 、Ingress 简介 1.1 kubernetes访问方式 在Kubernetes中&#xff0c;服务和Pod的IP地址仅可以在集群网络内部使用&#xff0c;对于集群外的应用是不可见的。为了使外部的应用能够访问集群内的服务&#xff0c;在Kubernetes 目前 提供了以下几…

基于PaddleSeg开发的人像抠图web api接口

前言 基于PaddleSeg开发的人像抠图web api接口&#xff0c;提取官方代码&#xff0c;适配各种系统&#xff0c;通过api的接口进行访问。 环境要求 1、Python3.7以上 2、源码&#xff08;文章最后下载&#xff09; 源码结构 测试module.py中添加如下代码&#xff1a; if __na…

MYSQL练题笔记-高级查询和连接-简单题3题

写了下面的前3道题。 一、每位经理的下属员工数量 看到题目就知道和之前的至少有5名下属的经理很相似&#xff0c;嘿嘿写对了就不做过多的讲解了。 二、员工的直属部门相关表和题目如下 刚开始觉得很简单&#xff0c;但是仔细想想这道题有两个输出&#xff0c;觉得想不出来&a…

【C语言】函数递归详解(二)

前言 在上一篇博客函数递归详解&#xff08;一&#xff09;中讲解了什么是递归&#xff0c;递归的思想及限制条件以及两个递归的例子&#xff0c;这一篇博客将讲解递归与迭代的关系。 递归与迭代 递归是一种很好的编程技巧&#xff0c;但是同很多技巧一样也是可能被误用的&…

深入剖析Java Web开发中的过滤器、拦截器和AOP

文章目录 1. 过滤器&#xff08;Filter&#xff09;1.1 过滤器的概念1.2 过滤器的应用场景1.3 过滤器的示例代码 2. 拦截器&#xff08;Interceptor&#xff09;2.1 拦截器的概念2.2 拦截器的应用场景2.3 拦截器的示例代码 3. AOP&#xff08;面向切面编程&#xff09;3.1 AOP的…

如何选择一款安全可靠的跨网安全数据交换系统?

随着网络和数据安全的重视程度增加&#xff0c;为了有效地保护内部的核心数据资产&#xff0c;普遍会采用内外网隔离的策略。像国内的政府机构、金融、能源电力、航空航天、医院等关乎国计民生的行业和领域均已进行了网络的隔离&#xff0c;将内部划分成不同的网段&#xff0c;…

基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(二)——数据清洗、转换

2 数据清洗、转换 此实验使用S3作为数据源 ETL: E extract 输入 T transform 转换 L load 输出 大纲 2 数据清洗、转换2.1 架构图2.2 数据清洗2.3 编辑脚本2.3.1 连接数据源&#xff08;s3&#xff09;2.3.2. 数据结构转换2.3.2 数据结构拆分…

CSS-200个小案例(一)

文章目录 1.Simple Parallax Scrolling Effect&#xff08;简单的视差滚动效果&#xff09;2.Fullscreen Video Background&#xff08;全屏视频背景&#xff09;3.Transform Effects on Scroll(滚动时产生的变换效果&#xff09;4.Fullscreen Overlay Responsive Navigation M…

今日实施|解读新国标对数据库审计的能力要求

数据库审计是数据安全建设不可或缺的技术工具之一&#xff0c;无论是国家级的法律或标准&#xff0c;还是等保以及行业级的安全标准均对使用数据库审计有明确要求。据相关数据统计显示&#xff0c;数据库审计产品的市场需求已占据中国数据库安全市场容量的6成以上。 12月1日&am…

身份统一管理创新与优化 ——华为云OneAccess应用身份管理服务的2023年

2023年&#xff0c;随着云计算、物联网、人工智能等技术的快速发展&#xff0c;企业面临着数字化转型的巨大挑战与机遇。身份统一管理是企业数字化转型的基础&#xff0c;也是业务发展的关键。如何高效、安全、灵活地实现身份统一管理&#xff0c;成为企业亟待解决的首要课题。…

如何将四元数转换为旋转矩阵

什么是四元数&#xff1f; 四元数是表示物体在三维空间中的方向和旋转的几种数学方法之一。另一种方法是使用基于欧拉角的旋转矩阵&#xff0c;即滚动、俯仰和偏航&#xff0c;就像的封面图片。 通常使用四元数代替欧拉角旋转矩阵&#xff0c;因为“与 旋转矩阵相比 &#xff…

使用Python Flask搭建Web问答应用程序并发布到公网远程访问

使用Python Flask搭建web问答应用程序框架&#xff0c;并发布到公网上访问 文章目录 使用Python Flask搭建web问答应用程序框架&#xff0c;并发布到公网上访问前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程…