finally 异常解决的解决以及理解

版权声明: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. 将问题进行封装。将正常流程代码和问题出来代码相分离,方便阅读。
  2. 将正常流程代码和问题出来代码相分离,方便阅读。

异常得处理原则:

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{
关闭数据库;
}
}


猜你喜欢

转载自blog.csdn.net/weixin_43814195/article/details/85109885