异常处理
1、异常的定义:在程序运行过程中,由于语法或逻辑错误,导致程序中断,
无法继续运行,称为程序异常。
try与catch关键字在程序中出现异常,就必须进行处理,处理格式如下:
try{// 有可能发生异常的代码段
}catch(异常类型 对象){
// 异常的处理操作
}catch(异常类型 对象){
// 异常的处理操作
} ...finally{
// 异常的统一出口
}
JAVA中异常父类:Throwable
Throwable分为:Error和 Exception,Error表示错误,是 JVM 内部发生的异常,程序无法控制,一般程序员不用关心,Exception表示程序异常, Exception分为:
(1)受检异常,又称为编译时异常,必须使用try语句处理,或抛出
(2)非受检异常,又称为运行时异常,从代码上区别,继承RuntimeException 或其子类的异常,称为运行时异常。运行时异常可以不用处理。
在JAVA 中,为我们提供了以下关键字来处理异常:
try:尝试。把有可能出现异常情况的代码段,使用try语句块包裹起来,当这个代码段出现异常后,系统将会自动生成一个对应的异常对象,然后把该对象传递给
catch语句块。
catch:捕获。与try语句一起使用,当try代码段有异常出现,会把异常对象传入到catch语句块中,由程序进行处理。catch语句块可以有一个或多个,不能单独使用。当有多个catch语句时,顺序必须由子类在前父类在后。
finally:最终的。与try语句块一起使用,无论try语句是否出现异常,最终都会执行finally块中的代码。
throw:抛出。程序可以把一个异常对象抛出,由调用该代码的地方处理。
throws:抛出。在方法声明中使用。与throw关键字一起配合使用。
异常类,其实就是一种标记,起到一种语意的作用。构造方法实现的
常用的异常类:
ClassNotFoundException:类找不到
RuntimeException:运行时异常
SQLException:SQL操作异常
IOException:输入输出异常
ArithmeticException:算术异常
ClassCastException:类型转换
IndexOutOfBoundsException:下标越界
NullPointerException:空指针
IllegalArgumentException:非法参数
InputMismatchException :输入不匹配
异常的产生过程:
当被某句代码出现异常(在编译期、运行期),系统会产生该异常对应的异常类对象,如
果此时该代码在try语句块中,那么会从catch代码块匹配相应的异常类型,如果匹配成功,
会把该异常对象传给catch中声明的异常变量,然后执行catch语句块中的代码。其它catch
将不会执行;如果没有匹配成功的catch,那么会把该异常实例抛给 JVM,结束。如果出
现异常的代码没有使用try语句,那么产生的异常实例将直接抛给 JVM,JVM 的处理方式
是,中断程序的运行。
自定义异常
在实际开发中,我们把业务逻辑性的错误定义为异常,这样的好处是,我们可以利用
异常的机制来处理程序,在多层调用时,可以很方便的处理问题。
例如:
(1)登录验证异常
(2)权限控制异常
(3)其它业务逻辑异常