gpt4 book ai didi

java - 创建自定义异常

转载 作者:行者123 更新时间:2023-12-01 14:35:00 25 4
gpt4 key购买 nike

我正在尝试创建一个方法 f1(x),当 x 等于 5 时,它会抛出异常。之后我将尝试从另一个方法 f2()< 调用该方法 调用该异常。然后我必须通过调用 f1(x+1)f2() 恢复。我尝试编写一些代码,但我被困住了。这是代码:

public class FiveException extends Exception {

public void f1(int x) throws FiveException {
if (x == 5) {
throw new FiveException();
}
}

public void f2() {
int x = 5;
try {
f1(x);
}catch (FiveException e) {
System.out.println("x is 5");
}

}


public static void main(String[] args) {
FiveException x5 = new FiveException();
x5.f2();
}

}

打印语句有效,但我不确定如何调用f(x+1)。任何有关如何解决此问题的帮助以及任何编写异常的技术都将受到赞赏。

最佳答案

因为 f1 会抛出 FiveException,所以无论您在何处调用 f1,您都必须捕获异常或将其抛出到调用引发该异常的方法异常(exception)。例如:

public static void main(String[] args) throws FiveException {
FiveException x5 = new FiveException();
x5.f1(1);
}

或者:

public static void main(String[] args) {
FiveException x5 = new FiveException();

try {
x5.f1(1);
} catch (FiveException e) {
e.printStackTrace();
}
}

但是你的代码很困惑......通常,它不是抛出异常类本身,你还有其他类抛出异常类。

如果在 catch 语句内调用它,则必须用另一个 try-catch 包围它,因为 catch 内的代码不 protected ,如下所示:

public void f2() {
int x = 5;
try {
f1(x);
}catch (FiveException e) {
System.out.println("x is 5");
try {
f1(x + 1);
} catch (FiveException e) {
e.printStackTrace();
}
}
}

但是这段代码很难看,你可以这样写:

public void f2() {
int x = 5;
fProtected(x);
fProtected(x + 1);
}

private void fProtected(int x) {
try {
f1(x);
}catch (FiveException e) {
System.out.println("x is 5");
}
}

关于java - 创建自定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16554491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com