编译程序时出现此错误:
./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()
抛出 Exception
或 Exception
的任何子类。由于检查了 Exception
,任何调用 initClientUI()
的方法都必须捕获 Exception
或将其列在其 throws
中> 条款。
我建议阅读 tutorial on exceptions .
关于java - 我的代码请求抛出异常,但是当我这样做时,它说不应抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15992976/