[英]JAVA. I am getting an 'unreported exception' compiler error
我正在嘗試編譯此代碼,但它始終出現錯誤,
errThrower.java:37: error: unreported exception Exception; must be caught or declared to be thrown
throw new Exception();
這個異常拋出在callmethodErr()
,我認為它已經被main捕獲了,但是我不知道發生了什么。
謝謝大家
import java.util.IllegalFormatConversionException;
public class errThrower
{
public static void main(String[] args)
{
try
{
callmethodErr();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void methodErr() throws Exception
{
System.out.println("error thrown from methodErr");
}
public static void callmethodErr()
{
try
{
methodErr();
}
catch (Exception e)
{
System.out.println("error thrown from callMethodErr");
throw new Exception();
}
}
}
該方法:
public static void callmethodErr()
{
包含以下行:
throw new Exception();
但不聲明因此throws Exception
:
public static void callmethodErr() throws Exception
{
Exception
是一個已檢查的異常,這意味着您必須在引發該異常的方法中捕獲它,或者聲明您的方法可能會引發此異常。 您可以通過如下更改方法callmethodErr
的簽名來callmethodErr
這一點:
public static void callmethodErr() throws Exception
{
// ...
}
有關其工作原理的更多詳細信息,請參見:Oracle Java教程中的“捕獲或指定要求” 。
正如編譯器所說,方法callmethodErr
可以引發Exception。 因此,您必須在方法callmethodErr
捕獲該Exception或聲明該方法callmethodErr
引發該異常。 是否在main方法中捕獲它callmethodErr
,因為您還可以從另一個方法(不是main)中調用方法callmethodErr
,而忘記捕獲它,因此編譯器必須防止這種情況。
聲明像這樣的方法public static void callmethodErr() throws Exception
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.