黑马程序员技术交流社区
标题:
学习分享之Java中的异常处理
[打印本页]
作者:
自渡
时间:
2019-5-19 20:01
标题:
学习分享之Java中的异常处理
异常概述:
指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。
file:///C:/Users/86136/AppData/Local/Temp/enhtmlclip/Image(1).png
Error是系统内部的错误,运行时报错,是系统的问题,是不能通过修改程序来处理的.
Exception是程序员可以根据问题描述可以处理,我们常说的异常处理就是处理Exception.
异常的分类: 可以分为两种,编译时异常和运行时异常
编译时异常:
在编译期间产生的异常,如果编译期间不处理,编译不能通过
运行时异常:
在运行期间产生的异常,编译期间不会产生异常 (RuntimeException)
异常的处理:通常有两种方式处理异常
第一种:
.
声明处理异常:
将问题标识出来,报告给调用者。
格式: 修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2...{
}
如果方法内通过throw抛出了编译时异常,而没有捕获处理,那么必须通过throws进行声明,让调用者去处理。
关键字throws运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(抛出异常)
注意事项: 如果方法需要使用throws抛出多个异常来处理异常,假设这多个异常时父子类关系,那么就可以直接只抛父类异常.
第二种
:
.try...catch 捕获处理异常:
格式:
try{
编写可能会出现异常的代码(监控区)
}catch(异常类型 e ){ (捕获)
处理异常的代码
记录日志//打印异常信息//抛出异常
}
注意事项:
1.try和catch都不能单独使用
2.不管try中是否出现异常,程序还是会往下执行
异常处理的一些注意事项:
1.运行时异常被抛出可以不处理。即不捕获也不声明抛出。
2.如果父类抛出了多个异常,子类覆盖父类方法时,只能抛出相同的异常或者是他的子集。
3.父类方法没有抛出异常,子类覆盖父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出
4.当多异常处理时,捕获处理,前边的类不能是后边类的父类
5.在try/catch后可以追加finally代码块,其中的代码一定会被执行,通常用于资源回收。
6.如果finally有return语句,永远返回finally中的结果,避免该情况
两种处理方式的选择:
原则:如果该功能内部可以将问题处理,就用try,如果处理不了,交给调用者处理,就是用throws.
区别:
后续程序需要继续运行就用try
后续程序不需要继续运行就用throws
作者:
李的猜想
时间:
2019-6-15 10:27
加油!坚持就是胜利
作者:
电竞刘华强
时间:
2019-6-15 10:44
加油哦
作者:
飞飞飞翔的猫
时间:
2019-6-15 10:44
加油哦
作者:
冉辉
时间:
2019-6-15 11:07
爱你呦~要永远加油哦
作者:
醉墨
时间:
2019-6-15 11:09
还hi赶紧好好学习吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2