java的异常处理机制基础

1.try,catch和finally
        一般在编译或运行程序时,如果程序中存在语法之类的错误,编译或运行将会中止并报错。如果添加try catch语句,那么当try代码块中的程序出错,将会继续执行之后的catch代码块。之后可以选择是否添加finally代码块,无论try catch是否触发,finally都将执行,甚至try里面包含了return,返回前也会先执行finally。另外,finally中可以运行收尾善后性质的语句,如关闭I/O流,释放内存等。基本的语法结构如下:
try{
//代码块1
}catch(Exception e){
//代码块2
}finally{
//代码块3
}
        其中catch的两个参数Exception和e为异常类型和异常变量,类似于方法的声明,即把异常数据传递给Exception类型的变量e,之后可对e进行一些操作。关于异常类型和异常变量等知识可参考以下两个网址:https://m.runoob.com/java/java-exceptions.html和https://www.cnblogs.com/ECJTUACM-873284962/p/7527052.html
        需要注意的是,catch不可单独存在,try之后至少要有catch和finally之一,try,catch和finally之间不可有其他代码。
        另外,try语句之后可以存在任意多的catch语句,称为多重捕获块,抛出异常的数据类型从第一个捕获块开始顺序匹配,匹配到就执行,匹配不到就继续匹配。当异常被捕获,或通过所有捕获块,则捕获结束。

2.throws和throw
        throws声明方法可能出现的异常类型,使其调用者知道要捕获这个异常,并在之后进行处理。位置在方法体头部,参数圆括号之后,例如:
public static void main(String[] args)throws Exception{
//方法体
}
        可以同时声明多个异常类型,之间用,隔开。
        throw语句抛出一个异常,位置在方法体内,语法为:
throw 异常变量
        异常变量需要声明,例如:
Exception e=new Exception();
        或抛出的同时声明,例如:
throw new Exception();
        throw语句经常用来抛出自定义异常,即在语法上并无错误,但在程序设计中存在错误的情况,例如:
int age=-1;
        在语法上并无错误,但是显然人的年龄不可能是-1,遇到这种情况需要抛出异常的,可用throw。另外,在这种情况下,需要先声明throws。
        无论是throws还是throw,都是消极处理异常的方式,只是可能抛出或抛出异常,不会由函数处理异常,而是由函数的上层函数处理。更多内容可以浏览这个网址:https://m.jb51.net/article/74767.htm
        关于throws和throw的关联,如果捕获异常之后抛出给方法调用者处理,则需要在throws中声明其类型;如果捕获异常之后自行处理,则无需throws声明。

猜你喜欢

转载自blog.csdn.net/qq_24597937/article/details/80642084