异常处理

异常的定义

异常是在程序中导致程序中断运行的一种指令流。

异常结构

异常指的是Exception , Exception类, 在Java中存在一个父类Throwable(可能的抛出)
Throwable存在两个子类:
1.Exception(异常):程序编写或者执行过程中可能出现导致程序中断的指令流
2.Error(错误):JVM发出的错误操作,无法通过代码处理,只能避免
异常主要分为受检异常(运行期异常)和非受检异常(编译异常)
1.受检异常:RunTimeException类,在编译的时候不会报错,只有在程序运行的时候可能会报错。
2.非受检异常:Exception的子类中,除了RunTimeException类外所有的子类都是非受检异常,在编译的时候,系统就会报错,提醒程序员处理这个异常
在这里插入图片描述

处理异常

try+catch(捕获处理异常)

try+catch格式

try{
// 有可能发生异常的代码段
}catch(异常类型1 对象名1){
// 异常的处理操作
}catch(异常类型2 对象名2){
try+catch的处理流程
finally
异常体系结构
// 异常的处理操作
} ...
finally{
// 异常的统一出口
}

try+catch的处理流程

1.异常产生的时候,系统会自动生成一个实例化的异常对象。
2.如果异常产生的语句在try中,那么就会捕获这个异常,在catch中找到相匹配的异常对象,如果异常不在try中,异常就会抛出。
3.如果找到相匹配的异常对象,就会进行catch中的处理语句。

finally

在异常处理中,finally是一个异常的统一出口,可写可不写。无论异常是否会发生,始终都会在执行finally中的语句块。

多异常捕获(不常用)

catch(异常类型1 |异常类型2 对象名){
//表示此块用于处理异常类型1 和 异常类型2 的异常信息
}//注意和多异常抛出的格式区别,这里异常之前的关系是 | (或)

异常抛出

程序员自己不处理这个异常,一级一级往上抛,如果中途如果没有捕获这个异常,最终会抛给JVM虚拟机,虚拟机会中断程序并且在控制台显示这个异常

throws关键字

随异常一起的还有一个称为throws关键字,此关键字主要在方法的声明上使用,表示方法中不处理异常,而交给调用处处理。throws后面一般都是跟受检异常,受检异常在编译是系统会报错,一定需要throws关键字,非受检异常一般不写。
格式:

返回值 方法名称()throws Exception{
}

throw关键字

throw关键字表示在程序中人为的抛出一个异常,因为从异常处理机制来看,所有的异常一旦产生之后,实际上抛出的就是一个异常类的实例化对象,那么此对象也可以由throw直接抛出。

public void setAge(int age) throws Exception {
        if (age>150|age<0){
            throw new Exception("输入的年龄有误");
        }
        this.age = age;
    }

本来age只要输入的是Int形的数据,怎么输都没事,但是加了throw之后,符合if条件的数据,都会中断程序,抛出异常。

自定义异常类

编写一个类, 继承Exception,并重写一参构造方法 即可完成自定义受检异常类型。
编写一个类, 继承RuntimeExcepion,并重写一参构造方法 即可完成自定义运行时异常类型。
例如:

class MyException extends Exception{ // 继承Exception,表示一个自定义异常类
public MyException(String msg){
super(msg) ; // 调用Exception中有一个参数的构造
}
};

自定义异常可以做很多事情, 例如:

class MyException extends Exception{
public MyException(String msg){
super(msg) ;
//在这里给维护人员发短信或邮件, 告知程序出现了BUG。
}
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值