1.什么是异常?
异常就是程序中可能出现的问题,把这些问题按面向对象的思想封装成对象。
2.异常体系?
Throwable
|--Error
|--Exception
|--RuntimeException
这个体系的成员具备一些共性的特点,比如可抛性。这个体系中的类及其对象都能被throws,throw关键字所操作
3.throws,throw关键字的用法及区别?
throws--用于在函数上抛出异常类,可以抛出多个,用逗号分隔
throw--用于在函数内抛出异常对象。如果函数内有throw关键字抛出异常,则必须在函数上声明。
但运行时异常除外,即函数内如果抛出RuntimeException异常,函数上可以不用声明。因为一旦出现运行时异常,必须让程序停止,对代码进行修正。
4.异常的处理方式?
如果函数上声明了异常,调用者调用此函数时必须对异常进行处理。处理方式可抛可try。
处理异常的3种语句格式:
1.try{}
catch(异常类 e)
{}
2.try{}
catch(异常类 e)
{}
finally
{}
3.try{}
finally
{}
finally语句中通常定义关闭资源的语句。因为无论异常如何处理,最后资源必须被释放。
特例:当catch语句中有"System.exit(0)"这样的语句时,finally中语句将不会被执行。
5.异常在子父类中的特点?
子类对父类方法进行覆盖:
1.如果父类方法有声明异常的,子类中的方法抛出的异常必须是父类异常的子类或者子集。
2.如果父类方法没有声明异常,子类覆盖时出现异常,只能try不能抛。
6.异常的分类?
分为:编译时检测的异常(如果有异常抛出,但是没有进行处理,编译无法通过)
运行时异常(编译时不检测),即RuntimeExcepiton异常。
7.自定义异常?
自定义类继承Exception或者RuntimeException。
1.为了让该自定义类具备可抛性。
2.让该类具备操作异常的共性方法。
自定义异常类的信息时可以使用父类已经定义好的方法。
class MyException extends Exception{
MyException(String message){
super(message);
}
}