在方法的 body 中抛出新异常与在方法的 header 中抛出异常有什么区别

what is the difference between throwing a new exception within a body of a method and throwing the exception in the header of the method

您好,我想知道相同方法的两种变体之间的区别和相似之处。

public string test(String value)
throw new testException();

public abstract String test(String value) throw new testException;

如果我的语法有误,请原谅我。

public abstract String test(String value) throw new testException;

没有意义。您可以做的最接近的事情是写

public abstract String test(String value) throws testException;

表示 test 是一个方法 可以 抛出 testException。如果 testException 不是 RuntimeException,那么它 必须 那样声明。但是在方法签名中添加 throws testException 只是说方法 可以 抛出该异常,它实际上并没有抛出。

在 java 中,每个方法都应使用以下语法指示它们是否抛出异常:

public String test(String value) throws testException
{
   //your code here
   //at some point you will throw the exception like this:
   throw new testException();
}

如果你使用抽象方法,方法签名只需要包含throws表达式,但是当你实现方法时,你需要在方法体中添加throw语句。