例如,在此方法中:protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,java.io.IOException {}
抛出新的ServletException,java.io.IOException;未在方法定义中使用。这是为什么 ?任何人都可以告诉我为什么?我是java的新手。
使用下面的代码抛出中的以及为什么它不会在抛出异常的上述方法中使用。
class SomeClassName {
void show() throws Exception
{
throw new Exception();
}
}
答案 0 :(得分:2)
throws Exception
和throw new Exception();
完全不同。
throws Exception
是方法签名的一部分,并指定“允许此方法抛出Exception
s”。
throw new Exception();
是一个实际抛出异常的语句。
这是无效的(因为throw
不能成为方法签名的一部分):
public void test() throw new Exception(); {
}
并且这也不是(因为throws Exception
不是声明):
public void test() {
throws Exception;
}
答案 1 :(得分:1)
从字面上看,' 抛出'本身意味着它应与行为相关联。 '的抛强>'意味着它应与行动相关联。
同样,throws
作为一种行为与method
签名相关联。
public void test() throws CutomException{
//do whatever
throw new CustomException
}
前面提到的method
具有抛出CustomException
(throws
)的特征,如果在method
正文内被触发则执行相同的操作(throw
)。< / p>
答案 2 :(得分:0)
throw new Exception
&#34;创建&#34;一个例外,而throws Exception
只是&#34;抛出&#34;任何遇到的调用方法异常。