admin管理员组文章数量:1576353
一.try:放置可能引发异常的代码 catch:处理异常的代码
一个try语句块被执行一次,则只有一个catch语句被执行
try语句中声明的变量是代码块内部局部变量,catch内不能访问
程序不能使用catch对象来捕获error异常
二.常见的异常类型:
IndexOutOfBoundExeption,数组越界异常
NumberFormatException数字格式异常
ArithmeticException除0异常
Exception处理未知异常
NUllPointerException空指针异常
先处理小异常,后处理大异常,所有父类异常的catch块应该都排在子类异常的catch块后面
多异常捕获类型用|隔开
捕获多种异常时,异常有隐式的final修饰
三.访问异常信息
getMessage():返回该异常的描述字符串
printStackTrace():将该异常的标准错误输出
printStacktrace(PrintStream s):将异常信息的跟踪栈输出到指定流
getStackTrace():返回异常的跟踪信息
四.finally:用于回收在try中打开的资源
java的垃圾回收机制不会回收任何物理资源
finally语句块总是执行
如果在异常代码处理中使用System.exit(1)来退出虚拟机,finally将失去执行的机会
finally中使用了return语句或者throw语句,导致try和catch语句块中的return和throw失去执行机会
五.throws:主要用于方法签名
当前方法不知道如何处理异常的时候,由上一级调用者进行处理(即使用main方法的时候进行处理),否则交给JVM进行处理
一旦使用throws抛出异常,就无需try...catch语句进行处理
如果某段代码调用了一个带throws声明的方法,并且该方法抛出了一个Checked异常,调用方法要么放在try块中捕获异常,要么放在一个带throws声明抛出的方法中
子类方法声明抛出的异常不允许比父类方法声明中抛出的异常多
六.throw:用于抛出一个实际的异常
其抛出的不是异常类而是一个异常实例,且每次只能抛出一个异常实例,Java收到其抛出的异常的时候,终止当前执行流,跳到相应的catch块,由catch块处理该异常。如果throw语句抛出的异常是Check异常,则该throw语句要么处于try块中显式捕获改异常,要么放在一个带throws声明抛出的方法中。
catch语句和throw同时使用,再次捕获异常。可以防止恶意用户。
七.异常有两种:Checked和Runtime异常
check异常必须处理,使用try..catch语句捕获处理;不知如何处理的时候在定义方法时声明抛出异常
runtime异常无需处理
注意:
1.不要使用异常处理代替正常的业务逻辑处理
2.不要使用庞大的try代码块
3.避免使用Catch All语句
4.不要忽略捕获到的异常,在catch语句中要对其进行合适的处理/重新抛出异常,交给上层调用者进行处理/如果当前不知道如何处理异常,就不要在当前层使用catch语句来捕获该异常,直接使用throws声明抛出该异常,让上层调用者来处理。
版权声明:本文标题:Java异常处理注意点 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727797933a1130477.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论