【问题标题】:Regarding Writing a Custom Class Exception in Java关于在 Java 中编写自定义类异常
【发布时间】:2016-04-12 03:48:20
【问题描述】:

我正在尝试完成我的计算机科学课程教授分配的一项活动,但我不太确定他的意思是什么,请看第 4 项:

这是我目前所拥有的:

package ExceptionsActivity;

public class Exceptions {

public static void f1(int x) throws XisFiveException{
    if (x == 5){
        throw new XisFiveException("X cannot be 5");
    }
    else {
        System.out.println("Success, x = ");
    }
}

public static void f2_1(int x) throws XisFiveException{
    try {
        f1(x);
    } 
    catch (XisFiveException e) {
        f1(x + 1);
    }
}

public static void f2_2(int x) throws XisFiveException{

}
public static void main(String[] args) {

}

}

如您所见,我已经编写了方法 f1 和 f2_1,这是问题 2 所要求的。我打算将问题四的解决方案放在 f2_2 中。我不太确定 4 号该怎么做,任何关于前进方向的建议将不胜感激。感谢您的宝贵时间!

【问题讨论】:

    标签: java exception reflection throw


    【解决方案1】:

    这个问题试图帮助您理解异常处理。您有一个方法会引发名为f1 的异常。调用f1 的方法有两种处理方法。他们可以捕获它,也可以将其扔回调用它们的方法。第一个看起来像这样:

    //note that I have removed the "throws" from the method declaration
    public static void f2_1(int x) {
        try {
            f1(x);
        } 
        catch (XisFiveException e) {
            f1(x + 1);
        }
    }
    

    第二个看起来像这样:

    public static void f2_2(int x) throws XisFiveException{
        f1(x);
    }
    

    同样,不同之处在于一个使用 try catch 块处理异常,而另一个只是将异常传递给调用它的任何方法。这些应该可以帮助您解决问题,但正如您的教授所说,重要的是要了解处理异常的不同方法。

    【讨论】:

    • 感谢您的回复!但是有一个问题,你为什么要从方法声明中删除 throws?在 Eclipse 中,当我删除它时,f1(x + 1) 不再编译,它显示“未处理的异常类型 XisFiveException”。对此有任何意见吗?谢谢!
    • @Biggytiny 你是对的 - throws 是必需的,但不是第一个 f1(x) 调用。第二次调用 f1(x+1) 需要它。接得好。关于这个例子需要注意的重要一点是它有点令人困惑。通常,如果您使用 try-catch 处理异常,则不需要仍然声明您的方法会引发异常。但是,在这种情况下,您会这样做,因为 catch() 再次调用 f1 方法
    • @Biggytiny 没问题,很乐意提供帮助。如果我的回答对您有帮助,如果您接受它作为解决方案,那就太好了。
    猜你喜欢
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多