在异常中,在一个方法的参数列表后加throws Exception声明一个抛出异常,但是throw在什么地方用呢,是不是用了throws声明了一个抛出异常,在catch中就要用到throw呢,这个我实在搞不懂,请各位大侠们帮帮我啊!!!

解决方案 »

  1.   

    不太明白你是什么意思,但如果你自己写的方法中,可能抛出异常的话,就必须进行声明,并且在调用方法的时候,用try-catch语句捕获。尤其是自定义异常。
      

  2.   

    刚刚看过你那个问题,其实你的程序如果不想做异常处理,直接写成这样就可以了
    class Excep {
    public int abc(int a, int b) {
    return a / b;
    }
    }
    class Test {
    public static void main(String[] args) {
    Excep excep = new Excep();
    excep.abc(5, 0);
    }
    }
      

  3.   

    我知道我写的这个例子怎么调试才能正确,我的目的是想了解一下throw和throws的具体用法!
      

  4.   

    如果你说要自己做异常处理,肯定是想处理“被0除”的这个问题。
    那么,这里有2个方法,abc和main,你要在哪个类里面处理呢?
      

  5.   

    我在abc方法中声明抛出了,那这个异常不就传到它的上一级了吗,也就是main(),由它来进行处理,这个我知道!!!!那throw在哪里用得到呢,具体怎么用呢?
      

  6.   

    一个方法申明会抛出异常,throw语句当然在方法体中咯。
      

  7.   

    写个例子给你class Excep {
    public int abc(int a, int b) throws Exception {
    try {
    return a / b;
    } catch (Exception e) {
    // 假设你要在这里做异常处理,就在这里写代码
    // 不处理,就要把异常抛出去
    // 我这里做抛出
    throw e;
    }
    }
    }class Test {
    public static void main(String[] args) {
    Excep excep = new Excep();
    try {
    excep.abc(5, 0);
    } catch (Exception e) {
    // 假设你要在这里做异常处理,就在这里写代码
    // 我在这里做处理,只友好的提醒用户,不让用户看到一大片红字
    System.out.println("亲爱的feiyuxianwan(绯雨闲丸),你的程序出了一点小错,你需要联系管理员处理");
    }
    }
    }
      

  8.   

    那在一个方法的参数列表后声明了抛出,那在这个方法中还可以用throw吗?
      

  9.   

    “那在一个方法的参数列表后声明了抛出,那在这个方法中还可以用throw吗?”绝对可以。假设一个方法指名throws,那么方法内部可以没有throw(但是一般都有,就如同我上面例子)。
    假设一个方法内部有throw,并且没有处理,那么方法一定要指明throws。
      

  10.   

    throws不就是声明抛出一个异常,说明这个方法中有可能会产生异常,如果在方法内部没有用try{},catch{},那么它就会上传到它的调用者,由它的调用者进行处理.如果你用throws声明抛出的异常是一个非运行时异常,是不是就必须在方法内部用throw进行抛出了呢?
      

  11.   

    你的考虑顺序想错了。
    须知,是当你abc方法catch了某种Exception并且不想在abc方法内解决它的时候,才需要throw它出来,而throw它的直接结果就是必须要将abc方法声明成throws 某种Exception。一个方法,先有throw(并且没有被解决),才必须有throws!你为何非要先把方法定义成throws,然后拼命的思考要不要在方法内throw呢?假设abc中一个非运行时异常,既然是非运行时的,那么你肯定在代码的时候就知道可能要出这个异常,那么在abc的代码中一定会写try和catch。既然你catch了某个非运行时异常,如同我上面所问,你到底要在哪里处理?如果你要在catch中处理掉,就不用throw;如果你不想处理,那就在catch里面写throw。
      

  12.   

    最后一个问题:
    public int abc(int a,int b) throws ArithmeticException
    {
       return a/b;
    }
    我在这个方法里面也不进行处理,那它要上传给它的调用者进行处理,那和在这个方法里用try,catch,并在catch里throw有什么区别啊
    public int abc(int a,int b) throws ArithmeticException
    {
       try{
    return a/b;
          }
       catch(ArithmeticException{
          throw e;
    }
    }
      

  13.   

    那前者我不是也用throws直接抛出了吗?后者即用了throws,也用了throw,这有什么不同啊?
      

  14.   

    这就是我说的,当你的程序中没有明确的throw的时候,为什么你非要在方法后面加throws呢?
    加throws的结果,其实就是明确要求调用者:“你在调用我的时候,很可能会有异常,所以我要求你在调用的时候try并catch”。对于你上面这个小方法abc,只是rutern a/b,当然体现不出来加throw的意义。
      

  15.   

    throw 一般都是想省事的时候用的,比如你想实现什么功能可怕异常,就先抛出一个异常。实际情况都是try{}catch{}把异常抛出用CATCH{}来捕获这个异常 比如SQL的ID主键不能重复你,用THROW的话,它抛出异常的话只能在控制台看到,可用TRY CATCH的话可以把异常捕获到页面,这样用户就知道哪里写错了。
    菜鸟意见。不要笑偶,偶也是刚刚工作没多久~!!
      

  16.   

    我们用java来解决实际问题。java技术交流,讨论java的技术细节和最新技术。欢迎中高级程序员以及渴望学习java技术的初学者加入讨论。QQ群:3001581