10、异常

一、 什么是异常:
a) 异常是程序执行期间发生的各种意外或不正常的事件,它会中断正在运行的程序。
虽说对某些异常JVM已做出处理,但应用程序中还会有很多JVM不能预知的情况,那么这些异常就需用应用程序来编码处理了。

二、 处理异常的语法:

public void method(){
try {
    // 代码段(此处是会产生异常的代码)
	//2
} catch (异常类型 ex) { 
      // 对异常进行处理的代码段
} finally{
	//这里的代码始终都会被执行
}
// 其它代码
}
a)	catch异常处理块可以不是必须的,可以省略如: try{ ….. } finally{ …… }

三、 try、catch、finally、throw、throws
a) try代码块用以包含可能出现异常的代码。
b) catch块捕获try代码块中产生的异常。
c) finally块跟在catch或try之后用于确保无论是否发生异常都需执行的代码。
d) throw用在方法或构造函数里,用于手动(编码)引发一个异常。如:

public void method(){
	throw new IllegalArgumentException(“参数不合法”);
}

e) thows用在方法或构造函数的定义上,说明方法或构造函数会产生哪些异常,多个异常用逗号分隔。如下指示方法method可产生算术异常和非法参数异常:

public  void  method(…)  throws ArithmeticException, IllegalArgumentException {
	//方法声明已经可抛出两个异常,那么方法体内产生这两个异常的代码就可以不需要try-catch处理。
}

四、 java.lang.Exception是所有异常的父类
在这里插入图片描述
五、 Throwable 类具有两个子类,它们是:
a) Exception异常、例外:合理的用户程序应当捕获处理的异常情况。
b) Error错误:用于指示合理的应用程序不应该试图捕获的严重问题。如JVM进程内部错误、系统级的错误,这些不是合理的应用程序应处理的。

六、 常见异常类:
在这里插入图片描述
七、 多重catch块:
在这里插入图片描述
如果出现多重catch块时,catch块的先后顺序有规定,异常的子类(越具体的异常)放在最前面的catch块来处理,异常的父类放在最后面处理,Exception放在最后面处理。

八、 异常的分类:
a) 检查异常(受控异常):这类异常一定要在代码里必须用try-[catch]-[finally]来处理。Exceptionn属于检查型异常。
b) 非检查异常(即运行时异常也叫不受控异常,RuntimeException或RuntimeException的子类都属于这类异常,如被0除、NullPointerExceptiont,数组下标越界等操作就会出现这类异常,这类异常JVM会自动处理不强制的要求在用户代码里用try-catch处理)。常见的运行时异常有如下:

九、 throw 关键字:
a) 用在方法体内或者是构造函数内手动向外(调用方)抛出一个异常。
b) 语法:

throw  new 异常类();  或throw  ex; //ex为异常对象

十、 throws关键字:
a) 在声明方法或者构造函数头时声明可以抛出哪些类型的异常。
b) 语法:

public  void  method()  throws 异常类型1, 异常类型2…n {   }

十一、 自定义异常:
a) 异常是类(可把它看成一种特殊的类),所可用异常表示一种业务问题的类型,那么自定义异常可以更加明确具体的知道应用出现了何种问题,使开发人员更容易的定位应用程序产生问题的具体原因和位置。
b) 语法:

public class MyException extends Exception{
	//构造函数
	//重写父类的方法
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章