什么是异常
在程序中编译或者运行出现的问题称为异常
异常的继承体系
Throwable : 这个是Java中所有异常类型的父类
Error:错误 必须要更改代码才能解决问题
Exception:异常 处理方式有两种,抛出处理,和捕获处理
编译时异常 : 代码编写的时候就爆异常,编译不能通过,必须选择一种处理方式,才可以编译通过
运行时异常:代码可以编译通过,但是运行时就会抛出异常,可以通过程序员良好的编程习惯,而避免运行时异常发生
错误和异常的区别
错误:一般是由操作系统发聩给我java虚拟机的,不能处理,只能修改代码,错误都是以Erroe结尾
异常:我们可以针对异常进行处理,如果不处理(捕获),则会和错误一样,异常是以Exception结尾
异常的两种处理方式
抛出处理
格式: throws 异常类名,异常类名。。。。 (throws后面可以跟多个异常类名,用“,”隔开)
位置:放在方法名后
注意:如果你定义一个方法,选择的是抛出处理,那么另一个方法调用了你这个方法也要处理这个异常,可以选择抛出处理和捕获处理,如果一直没有捕获最终会抛给JVM,JVM就会在控制台输出异常信息
如果都是使用抛出处理,一个方法里面的一句代码抛出异常,那么他下面的代码就不会往下执行了,而是往调用他的那个方法抛出异常,一直往上抛出异常,直到抛给JVM,JVM就往控制台输出异常信息
// 这个方法抛出了两个异常,如果另一个方法调用了这个方法必须选择一种异常处理方式 public void test() throws RuntimeException,NullPointerException{ }
捕获处理
格式 :try{ } catch(异常类名 对象名){ }finally{ }
使用方法以及使用位置
位置使用在方法内部
把可能出现异常的代码用try后面的大括号括起来
catch后面的小括号为前面大括号可能出现异常的类型或者为可能出现异常的父类
finally可以不写,执行完了finally前面的代码,然后执行finall大括号里面的代码,不管try后面的大括号里面的代码是否抛出异常,都会执行finall后面的大括号里面的代码,里面一般写释放资源的代码
捕获处理的过程
1, try后面大括号里面的一句代码出现异常,他后面的代码就不会接着往下执行了
2, 然后执行catch后面大括号里面的代码,这个里面的代码一般为对异常处理的一些具体逻辑 3,然后再执行catch大括号后面的代码
4,如果cantch大括号后面有finally就执行finally大括号里面的代码,如果没有就不执行
注意:catch(){ }后面可以跟多个carch(){ },前面的catch的小括号里的异常类面不能出现后面catch小括号里面的父类。
public void test() { try { String s = null; s.toString(); //这个异常类为,try后面的大括号可能出现的异常种类或者为他的父类 }catch (NullPointerException e){ //这里面为处理异常的逻辑 }finally { //finally可以不写 //不管try里面的代码是否爆异常都会执行这个大括号里面的代码 } }
java异常
最新推荐文章于 2023-06-29 19:17:39 发布