zoukankan      html  css  js  c++  java
  • 异常类

    How

     1     XXMethod()throws Child1Exception,Child2ExCeption//除了RuntimeExceptiong及其子类,均要throws异常
     2     {
     3         try
     4         {
     5             //抛出Child1Exception对象
     6             new throw Child1Exception();
     7             new throw Child2Exception();
     8         }
     9         catch (Child1Exception e)//捕获抛出的异常对象并处理
    10         {
    11             e.printStackTrace();
    12             ...
    13         }
    14         catch (Child2ExCeption e)
    15         {
    16             e.printStackTrace();
    17             ...
    18         }
    19         ...
    20         finally
    21         {
    22             要释放的资源
    23             或一定要执行的代码
    24         }
    25     }

    自定义异常实例

     1 /**
     2 *自定义两个异常:除数为负数异常,除数为零异常
     3 *throws 异常类1,异常类2 ,写在函数后面,表示这个函数可能有问题
     4 *throw new 异常1(..) ,写在函数里面,抛出异常1对象,将供给catch
     5 *catch(异常1 e){}将捕获抛出的异常1的对象,赋给e,然后再操作e
     6 *当throw执行时,其后的语句将不会执行,与return类似
     7 *RuntimeException及其子类是特殊的异常类,可以直接抛出起对象,意义在于发生异常时终止程序,提示须改程序
     8 *finally:主要用于释放资源!如操作数据库异常,不做finally处理,数据库连接将不会断开,占用资源
     9 *注意1:子类继承父类,那么子类抛出的异常只能是父类异常的子类对象或则子集
    10 *注意2:父类或接口没有定义的异常对象,子类只能try不能抛
    11 */
    12 class FuShuException extends Exception
    13 {
    14     FuShuException(){
    15         super();
    16     }
    17     //声明负数异常的构造方法,调用父类的构造方法
    18     FuShuException(String msg){
    19         super(msg);
    20     }
    21 }
    22 class ZeroException extends Exception
    23 {
    24 
    25     //声明负数异常的构造方法,调用父类的构造方法
    26     ZeroException(String msg){
    27         super(msg);
    28     }
    29 }
    30 class Test
    31 {
    32     public double count(int a,int b)throws FuShuException,ZeroException
    33     {
    34         //RuntimeException可直接抛出,而并没有throws,也没有catch,其子类如NullPointerException,ArithmeticException等
    35         if(a<0) throw new RuntimeException("被除数a<0");
    36         else if(b<0) throw new FuShuException("负数异常: by / 负数");
    37         else if(b==0) throw new ZeroException("除数零异常:by / 0");
    38         return a/b;
    39     }
    40 }
    41 class YiChang 
    42 {
    43     public static void main(String[] args) 
    44     {
    45         try{
    46             Test t=new Test();
    47 
    48             System.out.println(t.count(5,-1));
    49             
    50         }
    51         catch(FuShuException e){
    52             e.printStackTrace();//异常对象:错误信息+错误代码行数
    53             //System.out.println(e.toString());//异常对象:错误信息
    54             //下面这一句可以测试出finally的作用
    55             //return;
    56         }
    57         catch(ZeroException e){
    58             e.printStackTrace();//异常对象:错误信息+错误代码行数
    59             //System.out.println(e.toString());//异常对象:错误信息
    60         }
    61         finally{
    62             System.out.println("over");//finally里面写一定会执行的语句(除非调用System.exit(0)退出jvm虚拟机)
    63         }
    64         //注意,这里与finally不同的是,如果异常执行并停止程序的时候,下面的语句不执行,而finally中的会执行
    65         System.out.println("over2");
    66     }
    67 }
  • 相关阅读:
    oracle 锁表查看与解锁
    oracle 监视索引是否使用
    oracle 查看数据库版本
    mybatis 中文做参数报错
    windows mysql绿色版配置
    maven使用本地jar包
    Java 使用Jedis连接Redis数据库(-)
    Linux 安装redis
    ELK之在CentOS7.5上使用rpm包安装配置ELK7版本
    Ubuntu-18.04更改安装源为国内源
  • 原文地址:https://www.cnblogs.com/erhai/p/4696772.html
Copyright © 2011-2022 走看看