看一段代码:public static void p() throws MyException  //这个MyException已经定义过了
{
    System.out.println("从p()抛出MyException");
    throw new MyException("p()中发生");
}
这里只是截取了一小段,我有个疑问,声明p()方法时已经抛出异常给调用者,那方法体里面再次抛出异常MyException,不还是跑给调用者吗?只是方法体里面提供了一个消息作参数,那能省略声明时那句抛出异常吗?

解决方案 »

  1.   

    LZ的理解有点问题,throws意思是the method can throw an exception(可能而已)
    throw new Exception();是将Exception抛出了
    再好好看看书先!
      

  2.   

    这句
    throw new MyException("p()中发生");是人为的new了一个异常,并抛出这个时候有两种解决办法,一是对这句话try/catch处理
    二是在方法声明后加上throws,指不处理这个异常,抛给上一级(也就是方法调用者)处理
      

  3.   

    最好用try。。catch来捕获异常,然后打印相应的异常标记
      

  4.   

    我想楼主的意思是只写一个throw Exception行不?要注意.在方法处声明的是“throws”,是声明,不可少,但只是声明,并不真正抛出异常.
    在方法体里的是“throw”,这都是真正抛出异常的地方.
    如果用try{}catch(){}的话就不用这样子了
      

  5.   

    二楼说的对,楼主思路可能一时搞混淆了
    public static void p() throws MyException  //这里说这个p()方法可能会抛出异常MyException  
    {
        System.out.println("从p()抛出MyException");
        throw new MyException("p()中发生");//向外抛出异常
    }而且关键字不同,throws 和 throw