我正在尝试编译此代码,但它一直有错误,
errThrower.java:37: error: unreported exception Exception; must be caught or declared to be thrown
throw new Exception();
callmethodErr()
抛出了这个异常,我认为它已被主要捕获,但我无法弄清楚发生了什么。
谢谢大家。
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();
}
}
}
答案 0 :(得分:2)
此方法:
public static void callmethodErr()
{
包含以下行:
throw new Exception();
但是并没有声明throws Exception
因此:
public static void callmethodErr() throws Exception
{
答案 1 :(得分:1)
Exception
是一个经过检查的异常,这意味着您必须在抛出它的方法中捕获它,或声明您的方法可能抛出此异常。您可以通过更改方法callmethodErr
的签名来执行此操作:
public static void callmethodErr() throws Exception
{
// ...
}
有关其工作原理的更多详细说明,请参阅Oracle Java教程中的The Catch or Specify Requirement。
答案 2 :(得分:1)
正如编译器所说,方法callmethodErr
可以抛出异常。因此,您必须在方法callmethodErr
中捕获该异常,或者声明方法callmethodErr
以抛出异常。是否在main方法中捕获它是不相关的,因为你也可以从另一个方法(不是main)调用方法callmethodErr
而忘记捕获它,编译器必须阻止它。
声明像public static void callmethodErr() throws Exception