JAVA我收到一个“未报告的异常”编译器错误

JAVA我收到一个“未报告的异常”编译器错误,java,exception,checked-exceptions,catch-exception,Java,Exception,Checked Exceptions,Catch Exception,我试图编译这段代码,但它一直有一个错误 errThrower.java:37: error: unreported exception Exception; must be caught or declared to be thrown throw new Exception(); 这个异常是在callmethodErr中抛出的,我认为它已经在main中被捕获了,但是我不知道发生了什么 谢谢大家 import java.util.IllegalFormatConversionExcepti

我试图编译这段代码,但它一直有一个错误

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();          
但不声明它抛出异常,因此:

此方法:

public static void callmethodErr()
{
包含以下行:

throw new Exception();          
但不声明它抛出异常,因此:

异常是一个已检查的异常,这意味着您必须在抛出异常的方法中捕获它,或者声明您的方法可能会抛出此异常。您可以通过如下方式更改方法callmethodErr的签名来实现此目的:

public static void callmethodErr() throws Exception
{
    // ...
}
有关其工作原理的详细说明,请参见:在Oracle的Java教程中。

异常是一个选中的异常,这意味着您必须在抛出它的方法中捕获它,或者声明您的方法可能抛出此异常。您可以通过如下方式更改方法callmethodErr的签名来实现此目的:

public static void callmethodErr() throws Exception
{
    // ...
}

有关如何工作的详细说明,请参见:在Oracle的Java教程中。

正如编译器所说,方法callmethodErr可以引发异常。因此,必须在方法callmethodErr中捕获该异常,或声明方法callmethodErr以引发该异常。您是否在main方法中捕获它与此无关,因为您也可以从另一个非main方法调用方法callmethodErr,然后忘记捕获它,并且编译器必须防止这种情况


像这样声明公共静态void callmethodErr抛出异常的方法

正如编译器所说,方法callmethodErr可以抛出异常。因此,必须在方法callmethodErr中捕获该异常,或声明方法callmethodErr以引发该异常。您是否在main方法中捕获它与此无关,因为您也可以从另一个非main方法调用方法callmethodErr,然后忘记捕获它,并且编译器必须防止这种情况


像这样声明公共静态void callmethodErr throws Exception的方法

callmethodErr尚未使用throws Exception定义,但它确实定义了。这是显而易见的吗?请允许我提醒你,如果有人帮助过你,接受回答是礼貌的。callmethodErr没有定义为抛出异常,但它确实存在。这是显而易见的吗?请允许我提醒你,如果有人帮助过你,接受回答是礼貌的。。