什么是java异常处理
1、异常
程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。(推荐教程:java教程)
2、异常处理机制
Java提供了更加优秀的解决办法:异常处理机制。
异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。
Java中的异常可以是函数中的语句执行时引发的,也可以是程序员通过throw 语句手动抛出的,只要在Java程序中产生了异常,就会用一个对应类型的异常对象来封装异常,JRE就会试图寻找异常处理程序来处理异常。
Throwable类是Java异常类型的顶层父类,一个对象只有是 Throwable 类的(直接或者间接)实例,他才是一个异常对象,才能被异常处理机制识别。JDK中内建了一些常用的异常类,我们也可以自定义异常。
3、异常的处理:
异常的处理分为消极的处理(自己处理不了,就往调用它的地方上抛throws,异常没有解决,只是抛出)和积极处理(异常捕获,捕捉异常通过try-catch语句或者try-catch-finally语句实现)
a) 消极的处理:
语法:
public void m1() throws 异常类名1,异常类名2{}
特点:相当于推卸责任,最终问题依然无法得到解决。
允许编译通过。
当上抛的异常为非运行(已检查)时异常时,调用此方法的调用者必须处理。
当上抛的异常为运行(未检查)时异常时,可以处理可以不处理。
b) 积极的处理:(异常捕获)
将异常直接捕获,并且做出处理
语法:
try{ //异常代码 }catch(异常类名 引用名){ //当异常产生执行的代码 }
try 后的catch代码块 只能匹配成功一个
catch后声明的异常为父类时,它能够捕捉的异常为它本身+所有子类异常(多态的体现)
注意:catch代码块捕获异常时,子类异常必须定义在父类异常前面,否则会编译出错
finally代码块:一定会执行此代码块中的代码,常用来关闭资源,
try{ }catch(){ }finally{ //无论是否产生异常,一定会去执行的代码 }
注意:finally代码块中不要定义return语句
4、关键字:throws,throw,try,catch,finally 分别代表什么意义?
throws 是获取异常
throw 是抛出异常
try 是将会发生异常的语句括起来,从而进行异常的处理,也可以在 try 块中抛出新的异常
catch 是如果有异常就会执行他里面的语句
finally 不论是否有异常都会进行执行的语句
Atas ialah kandungan terperinci 什么是java异常处理. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!