版权声明:https://blog.csdn.net/weixin_43814195?t=1 https://blog.csdn.net/weixin_43814195/article/details/85109885
如果数据库访问异常,没有finally执行关闭动作得话,这个访问数据库的资源一直没有关闭,
将一直占用这个资源,有可能妨碍其他用户得访问。数据库压力会非常大。
数据库异常不能抛出,
catch是用于处理异常得。如果没有catch就代表异常没有被处理过,如果该异常是检测时异常。那么必须声明。
finally代码块:
1, 定义一定执行得代码。通常用于关闭资源
2,finally只有一种情况不会执行。当执行到System.exit(0);finally不会执行
自定义异常
定义类继承Exceptionh或者RuntimeException
1,为了让该自定义类具备可抛性。
2,让该类具备可操作异常得共性方法
class MyException(String message){
MyException(String message){
super(message);
}
}
自定义异常:按照java的面向对象思想,将程序中出现特有问题进行分装
异常的好处
- 将问题进行封装。将正常流程代码和问题出来代码相分离,方便阅读。
- 将正常流程代码和问题出来代码相分离,方便阅读。
异常得处理原则:
1.处理方式有两种:try或者throws。
2,调用到抛出异常得功能时,抛出几个,就处理几个。
一个try对应多个catch。
3,多个catch,父类得catch放到最下面。
4,catch内,需要定义针对性的处理方式。不要简单定义printStackTrace,输出语句。也不要不写。
当捕获到的异常,本功能处理不了时,可以继续在catch 中抛出。
try{
throw new AException();
}catch(AException e){
throw e;
}
异常得注意事项:
在子类覆盖时:
1,子类抛出的异常必须是父类的异常得子类伙子子集。
2,如果父类或者接口没有异常抛出时,子类覆盖出现异常,只有try不能抛。
class NoException extends Exception{
NoException(String msg){
super(msg);
}
}
public vodi method()throws NoException{
}
链接数据库;
数据操作;//throw new SQLException(); 如果数据库操作抛出异常程序结束 就没有执行关闭数据库
关闭数据库;//该动作,无论数据库操作是否成功,一定要关闭资源
try{
链接数据库;
数据操作;//throw new SQLException();
}catch(SQLException e){
会对数据库进行异常处理;
throw new NoException();
}finally{
关闭数据库;
}
}