目录
1.认识异常的种类
2.认识throws方法和try-catch-finally方法来处理【我主要以数组越界异常和空指针异常来举例】
3.异常的传递
4.自定义异常
5.几道面试题来自我检验
一.异常的种类
1.顶层父类:Throwable
2.两大核心分支:Error(错误)和 Exception(异常)【主要来介绍这两个】
3.Error:是JVM自身出现的严重故障,如果出现只能通过优化代码、调整JVM参数解决,程序无法正常恢复。
4.Exception:可以通过手动来处理,主要是通过throw方法和try-catch-finally方法来处理
并且Exception还可以分类为Exception(编译异常)和RuntimeException(运行异常),【Exception是被编译器统一认定为编译异常的】编译异常会在还没运行的时候有红色下划线表示错误,而运行异常会在运行后报红

二.两种处理方法
1.throws抛出【交给JVM】
要注意区分throws和throw,两个都可以用于给用户注释错误
(1).throws,throws写在方法后面

(2).throw,throw一般用在判断的语句,可以和throws一起用。
因为所有异常都属于类,在throw的时候要new一个异常,并且可以在执行的地方看到我们自己写的有错误的提示,因为RuntimeException(运行异常)类是Throwable这个类的子类(所有异常都是),Throwable里面有很多构造方法,其中有一个就是可以填入一个字符串,其他的方法可以自行查看



【throw因为用于判断语句,所以可以多应用与用户登录时候的账号密码啥的】
2.try-catch-finally【交给用户自己】
是一种可以自行解决异常的方法,并且后续代码可以正常运行


代码解释:1.try里面放异常的代码,在异常后的代码在运行时不会运行到,检测到有异常就直接跳过转到catch里面
2.catch的()里面写异常名称来捕获对应的异常,可以写多个异常,多个catch或者几个异常写在一起,e.printStackTrace用来检测错误发生的行数,并且catch里面的打印也可以被打印出来,可以写一些提示异常种类的话
3.finally应用于善后,处理资源关闭,防止浪费【finally里面的内容一定被执行】
4.try-catch-finally后,由于我们自己用这个方法处理的异常,所以异常后的代码可以正常运行
注意
1.如果有多个异常,只会显示一个异常
2.catch里面自己写的异常都和try里面出现的异常不匹配的话会将问题一直往上抛,抛到错误最开始的地方,如果还没有处理的话就会交给JVM
三.异常的传递
异常的处理可以这样写


(1)你可以使用方法调用,当你调用这个有异常的方法时候,先会检查你方法里面有没有写,然后再检查你调用的地方,如果你自己方法里面的异常没有找对,就会去找上层方法【调用的是上层】,在你调用的地方去找,会一层一层往上找,直到找到对的异常停止,如果还没找到就会给JVM
就像下面这个一样


(2)至于传递就是当你func1方法里面有异常,在你调用的时候也会出现异常
四.自定义异常
自定义异常往往出现在用户登录的时候,并且伴随着throw出现



当然也可以在里面加上try-catch-finally方法
五.题目自测


左:因为异常的处理会优先找到下层方法,当下层方法没有对应的处理才会给到上层方法,所以会优先执行method方法内部的catch,并输出方法内部捕捉异常,选择B
右:因为没有对应的try-catch-finally方法来处理,所以一直往上层找,还是没有,最终交给JVM来处理,所以选C
933



被折叠的 条评论
为什么被折叠?



