问答详情
源自:1-7 Java 中的异常链

老师代码中的throw new DrunkException("喝车别开酒!");是什么意思

老师代码中的throw new DrunkException("喝车别开酒!");是什么意思 为什么要用new

还有RuntimeException newExc = new RuntimeException(e)中的e怎么理解

提问者:梅影西风 2015-12-27 20:09

个回答

  • 梁XX
    2016-01-03 13:14:24

    一个问题一个问题的来看:

    关于throw new DrunkException("喝车别开酒!");

    new DrunkException("喝车别开酒!"); 
    //初始化函数构造器--》TDrunkException异常对象,message为"喝车别开酒!"
    
    throw new DrunkException("喝车别开酒!");
    //throw 抛出异常的动作,抛出DrunkException异常对象实例


    关于RuntimeException newExc = new RuntimeException(e)中的e怎么理解

    你代码看错了,你可以回去再看清楚。

    RuntimeException newExc = new RuntimeException("test02中runtimeException中的catch块");
    newExc.initCause(e);  
    /*initCause( throwable cause) 即参数为可抛出异常的对象,DrunkException e继承Exception父类,即也属于throwable类
    如果没有.initCause( throwable cause),即没有定义causeby上一层的异常---异常链,printStackTrace的时候就不能打印cause by(保留原始异常作用)
    			
    */
    throw newExc; //抛出异常newExc

    我在异常链的章节下po出了老师的完整代码加注释,你有兴趣可以看看。希望帮到你

  • coder_fei
    2015-12-27 20:12:38

    抛出一个新的异常,当然也要用new 去实例化一个对象,毕竟异常也是对象啊。2.e是作为一个参数传递到RuntimeException()方法中,把e中信息传递