簡體   English   中英

JAVA。 我收到“未報告的異常”編譯器錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM