异常
异常(异常就是导致程序终止的一种指令流,异常会使程序终止执行)。
-
异常体系
- Throwable
- Error
- 通常出现重大问题如:运行的类不存在或者内存溢出等。
- 不编写针对代码对其处理
- Exception
- 在运行时运行出现的一起情况,可以通过try catch finally
- Error
- Throwable
-
Exception和Error的子类名都是以父类名作为后缀。Exception和Error的子类名都是以父类名作为后缀。
Throwable中的方法
-
getMessage()
- 获取异常信息,返回字符串。
-
toString()
- 获取异常类名和异常信息,返回字符串。
-
printStackTrace()
- 获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
throws和throw
- uthrows用于标识函数暴露出的异常。
- uthrow用于抛出异常对象。
- uthrows与throw的区别:
- thorws用在函数上,后面跟异常类名。
- throw用在函数内,后面跟异常对象。
异常处理
try{
需要检测的代码
}catch (异常类 变量){
异常处理代码
}finally{
一定会执行的代码
}
Finally代码块只有一种情况不会被执行。就是在之前执行了System.exit(0)。
自定义异常
- 自定义类继承Exception或者其子类
- 通过构造函数定义异常信息。
Class DemoException extends Exception
{
DemoException(String message)
{
super(message);
}
}
- 通过throw将自定义异常抛出。
异常细节
- RuntimeException以及其子类如果在函数中被throw抛出,可以不用在函数上声明。
- 一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类。
- 如果父类抛出多个异常,那么覆写(覆盖)方法必须抛出那些异常的一个子集,不能抛出新的异常。