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

如果数据库访问异常,没有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{
关闭数据库;
}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值