异常:
一般情况下,函数内出现异常,函数上需要声明。
发现打印的结果中只有异常的名称,却没有异常的信息。因为自定义的异常并未定义信息。
如何定义异常信息呢?
因为父类中已经把异常信息的操作都完成了。
所以子类只要在构造时,将异常信息传递给父类通过super语句。
那么就可以直接通过getMessage方法获取自定义的异常信息。
自定义异常:
必须是自定义类继承Exception。
继承Exception原因:
异常体系有一个特点:因为异常类和异常对象都被抛出。
他们都具有可抛性,这个可抛性是Throwable这个体系中独有特点。
只有这个体系中的类和对象才可以被throws和throw操作。
Exception中有一个特殊的子类异常RuntimeException:运行时异常
如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过;
如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过;
之所以不用再函数声明,是因为不需要让调用者处理。
当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修正。
异常分为两类:
1:编译时被检测的异常
2:编译时不被检测的异常(即RuntimeException及其子类)
finally非常重要
定义一定执行的代码。通常用于关闭资源。
catch适用于处理异常的,如果没有catch就代表异常没有被处理过,如果该异常时检测时异常,那么必须声明。