异常
-
异常:程序生病了
-
异常的分类
-
异常的处理 ***
异常的定义
-
Throwable
-
Error Exception
-
/ / \
-
UnChecked Checked Runtime
-
Exception Exception Exception
-
Error:错误,一般由虚拟机生成并脱出,程序员无法控制,不需要关注
-
Exception:异常
-
CheckedException检查时异常|编译时异常:是在编译时出现的,如果不处理,程序无法执行
-
RuntimeException运行时异常:是在程序运行的时候出现,简单的可以通过增强程序的健壮性来处理(if判断)
-
常见的运行时异常:
-
1.空指针 NullPointerException
-
2.数组索引越界 ArrayIndexOutOfBoundsException
-
3.类型转换异常 ClassCastException (引用数据类型父类|父接口引用强转为实现类|子类类型)
-
4.数学异常 ArithmeticException
-
5.负数异常 NegativeArraySizeException
-
6.数字格式异常 NumberFormatException
throw : 制造异常
- 遇到异常,不同的异常见名知意,非常直观,方便调试
- 如果遇到异常不处理,程序无法继续向下执行
- throw : 制造异常
- 异常处理方式:
- throws : 抛出异常
try…catch 捕获异常
- try{
- 可能会出现异常的代码;
- }catch(StringIndexOutOfBoundsException e){
- e…
- 如果出现这个类型的异常,就执行的代码
- }catch(NullPointerException e){
- …
- }catch(FileNotFoundException e){
- …
- }catch(Exception e){
- …
- }finally{
- 无论是否出现异常,肯定会执行的代码
- }
- 1.异常都可以使用异常处理的2中方式进行处理
- 编译时异常必须使用这两种方式处理,运行时异常可以使用这两种方式也可以使用增强程序的健壮性
- 2.抛出异常,当前不处理,异常抛出到上一层,方法的内部把异常抛出到方法上面,谁调用这个方法,谁处理
- 3.异常捕获,在遇到异常的时候当前位置就处理,捕获某个异常对象,使用异常的功能
- 4.如果try中遇到异常了,try中下面的代码不会执行,直接去执行对应catch中的内容,如果没有遇到异常,正常执行所有的try中代码
- 5.一个try后可以跟一到多个catch,捕获小范围的异常catch写在上面,否则下面的catch执行不到
- 6.finally中的内容无论当前trycatch结构是否遇到异常都会执行其中的代码,与前面的try…catch是一个结构