java - 我的代码请求抛出异常,但是当我这样做时,它说不应抛出异常

标签 java exception overriding

编译程序时出现此错误:

./GUI/mainWindow.java:30: error: unreported exception Exception; must be caught or declared to be thrown 
            clientUI.initClientUI(); 
                             ^ 
1 error

但是我的方法实际上抛出异常:

public final void initClientUI() throws Exception {

但是,如果我删除“抛出异常”部分,尝试编译,然后再次添加它,程序就会成功编译。谁能解释一下为什么会发生这种情况?


编辑:
如果我将“抛出异常”添加到我正在调用的方法

public void actionPerformed(ActionEvent e) throws Exception { //<-----add Exception there
            ClientWindow clientUI = new ClientWindow();
            clientUI.initClientUI();

我收到此错误:

./GUI/mainWindow.java:28: error: actionPerformed(ActionEvent) in <anonymous GUI.mainWindow$1> cannot implement actionPerformed(ActionEvent) in ActionListener
        public void actionPerformed(ActionEvent e) throws Exception {
                    ^
  overridden method does not throw Exception
1 error

最佳答案

通过说

public final void initClientUI() throws Exception {

您告诉编译器允许 initClientUI() 抛出 ExceptionException 的任何子类。由于检查了 Exception,任何调用 initClientUI() 的方法都必须捕获 Exception 或将其列在其 throws 中> 条款。

我建议阅读 tutorial on exceptions .

关于java - 我的代码请求抛出异常,但是当我这样做时,它说不应抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15992976/

相关文章:

java - Selenium 网络驱动程序 3.3.1

java - 如何以编程方式更改文件权限?

c++ - 如何将枚举返回值转换为 C++ 异常?

java - 为什么这段代码显示异常?

python - 如何为实例更改 dict() 的行为

C++ - 方法覆盖未按预期表达

java - 使用 XML 发送和接收数据

c# - 像这样处理特定异常是否可以

php - 如何检查派生类中的函数是否被重写?

java - 我们是否正在走向类似于 dll hell 的 java 平台中的 jar hell ?