小弟刚开始学习JAVA,有一个关于异常的问题,是关于throws和throw的.
如果在一个方法的参数列表后声明要抛出一个异常,
如:public int abc(int a,int b) throws Exception,那么在捕获异常时,如果还不想在这个方法中进行处理,那必须要写throw抛出吗?
请看下面这个例子:
class Excep
{
public int abc(int a,int b) throws Exception
{
return a/b;
}
}
class test
{
public static void main(String[] args) 
{
Excep excep=new Excep();
excep.abc(5,0);
}
}
我还是不想在abc这个方法中进行处理,但是这个方法我已经声明抛出异常了,但在这个方法中也没有再用throw进行抛出,请问这是不是因为这个异常是运行时异常的原因啊?如果不是运行时异常的话是不是就必须要在abc方法中用throw进行再次抛出了!

解决方案 »

  1.   

    能不能在主方法中用try{}catch{}来捕获呢?
      

  2.   

    可以用try catch包围excep.abc(5,0);啊!测试过了,没问题,用的是ECLIPSE!class Excep
    {
    public int abc(int a,int b) throws Exception
    {
    return a/b;
    }
    }
    class test
    {
    public static void main(String[] args) 
    {
    Excep excep=new Excep();
    try
    {
    excep.abc(5,0);
    } catch (Exception e)
    {
    // TODO 自动生成 catch 块
    e.printStackTrace();
    }
    }
    }
      

  3.   

    public int abc(int a,int b) throws Exception
    是把异常抛到上一层,由上一层进行处理,这里就抛给了调用它的哪个main方法,但在main方法中,没有try{}catch(){}也没有throws所以通不过编译.如果在main方法中也throws,则会将异常抛给jvm来处理.
      

  4.   

    噢,忘记回答lz的问题了,如果是一个运行时异常,不想处理,必须throws.
      

  5.   

    在方法abc中有异常抛出,但是在主方法中没有catch那么在运行的时候异常就不能被抓住!可以在main中加上try块!