java基础——异常
父类java.lang.Throwable(implements java.io.Serializable)
子类 java.lang.Error
子类java.lang.Exception
异常的处理方式一:捕获处理try{...}catch(Exception e){...}语句
执行结果:
发生异常代码后面的 System.out.println("2执行了"); 语句没有被执行。
try...catch的执行顺序:
首先执行try语句
1.如果发现异常,异常下面的代码不在执行,直接跳入catch语句中,catch语句结束后,整个try...catch结束
2.如果没有发现异常,try语句执行结束后,try...catch直接结束,不在执行catch语句中的内容
finally:
组合try...catch使用,用于释放资源等收尾工作,无论try...catch语句如何执行,finally的代码一定会执行
运行结果异常的处理方式二:抛出异常 thorws
多个异常的处理:
多个异常处理的方式 执行结果一个try 和 多个 catch的处理:当成功捕捉到try里面的异常处理后,后面的语句不在执行
多个catch之间的顺序:
1.多个catch之间可以有子父类
2.平级之间没有顺序关系
3.如果存在子父类关系,父类异常必须放在后面
Throwable的常用方法
— String getMessage() 获取异常的原因
— String toString() 获取异常的类型和原因
— void printStackTrace() 获取类型,原因,和位置
jvm输出的内容 getMessage() 方法 toString()方法 printStackTrace()方法异常的分类:
1. 运行时期时异常:RuntimeException的子类就是运行时期异常,在编译时期可以自由选择处理或者不处理
2. 编译时期异常:是Exception的子类,非RuntimeExcpetion的子类,在编译时期必须处理
throws 和 throw 的区别
throws:处理异常的一种方式,把异常抛出,由调用者来处理
throw:制造异常的方式,并且结束方法
例子:写一个方法,接受考试成绩,如果考试成绩的范围在0-100之间则属于正常,否则属于异常抛出自定义异常
如何自定义一个异常类呢?
非常简单,写一个类去继承Exception或者RuntimeException,然后实现多个构造即可
自定义异常类 运行结果