gpt4 book ai didi

java - 试图抛出自己的异常

转载 作者:行者123 更新时间:2023-11-30 07:14:10 27 4
gpt4 key购买 nike

我创建了自己的可抛出异常,但编辑器说,当我想抛出它时,需要对封闭类的引用。我不知道,我需要写什么。

代码如下:

public class Main {
int i = 0;
public Main() {
if (i == 0) throw new MyException("i must not be 0"); //Here it says about enclosing class
}
public static void main(String[] args) throws Exception {
new Main();
}
public class MyException extends Exception {
public MyException(String e) {
super(e);
}
}
}

谁能告诉我,我必须在哪里写什么?

最佳答案

您已将 MyException 定义为 Main 的内部类,然后创建了它的一个实例,但没有对应的 Main 实例可用(因为 main 方法是静态方法)。

您需要在 Main 之外单独声明异常类。将访问权限从 public 更改为 package-private 可以让您将声明保留在同一个文件中。否则,由于每个文件只能有一个公共(public)类,因此它需要放在自己的文件中。

或者,您可以将其定义为静态内部类,如下所示:

public class Main {
int i = 0;
public static void main(String[] args) throws Exception {
if (i == 0) throw new MyException("i must not be 0"); //Here it says about enclosing class
}

static class MyException extends Exception {
public MyException(String e) {
super(e);
}
}
}

使类静态化意味着它不引用封闭类的实例。

关于java - 试图抛出自己的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598078/

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