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

    场景:testone抛出一个异常,testtwo接受到testone的异常后抛出一个新异常,testthree接收到testtwo的异常后再抛出一个新异常

    代码如下:

    package com.mpp.test;
    
    public class TryDemoFive {
        public static void main(String[] args) {
            try{
                testTree();
            }catch (Exception e){
                e.printStackTrace();
            }
    
        }
    
        public static void testOne() throws HotelAgeException{
            throw  new HotelAgeException();
        }
    
        public static void testTwo() throws Exception{
            try {
                testOne();
            }catch (HotelAgeException e){
                throw new Exception("我是新产生的异常1");
            }
        }
    
        public static void testTree() throws Exception{
            try {
                testTwo();
            }catch (Exception e){
                throw new Exception("我是新产生的异常2");
            }
        }
    }

    运行结果只显示最后一个异常,造成异常的丢失

    解决异常链路抛出过程中丢失异常信息的问题:

    修改后的代码:

    package com.mpp.test;
    
    public class TryDemoFive {
        public static void main(String[] args) {
            try{
                testTree();
            }catch (Exception e){
                e.printStackTrace();
            }
    
        }
    
        public static void testOne() throws HotelAgeException{
            throw  new HotelAgeException();
        }
    
        public static void testTwo() throws Exception{
            try {
                testOne();
            }catch (HotelAgeException e){
                throw new Exception("我是新产生的异常1",e);  //把testone中捕获的异常参数,加进来
            }
        }
    
        public static void testTree() throws Exception{
            try {
                testTwo();
            }catch (Exception e){
                Exception e1 = new Exception("我是新产生的异常2"); //新建一个异常对象
                e1.initCause(e);   //把testttwo中的异常加进来
                throw e1; //抛出异常
    //            throw new Exception("我是新产生的异常2");
    
            }
        }
    }

    修改后的运行结果:

    总结:

  • 相关阅读:
    js 获取时间差
    linq 两个list合并处理,并分组
    单例模式 双锁
    2018年的读书清单
    感悟
    asp.net使用Microsoft.mshtml提取网页标题等解析网页
    //利用反射快速给Model实体赋值
    C# url接口调用
    多字段动态查询
    对图片的操作
  • 原文地址:https://www.cnblogs.com/mpp0905/p/10367599.html
Copyright © 2011-2022 走看看