2015-02-10 89 views
-1

例如,在此方法中:protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,java.io.IOException {}爲什麼有時我們不使用拋出新的異常?

throw new ServletException,java.io.IOException;未在方法定義中使用。這是爲什麼 ?誰能告訴我爲什麼?我是新來的Java。

在下面的代碼中使用了throw,爲什麼它沒有在上面引發異常的方法中使用。

class SomeClassName { 
     void show() throws Exception 
      { 
      throw new Exception(); 
      } 
     } 
+3

投擲和投擲是兩回事。谷歌他們 – Eran 2015-02-10 06:41:03

+0

它不是顯式拋出'ServletException',但它調用其他方法。 – alfasin 2015-02-10 06:42:55

+0

一些閱讀:http://stackoverflow.com/questions/4392446/when-to-use-throws-in-a-java-method-declaration – 2015-02-10 06:45:17

回答

0

throw new Exception「創造」了一個異常,而throws Exception簡單的「拋出」的任何遇到的異常給調用者的方法。

2

throws Exceptionthrow new Exception();做了完全不同的事情。

throws Exception是方法簽名的一部分,並指定「允許此方法拋出Exception」。

throw new Exception();是一個實際拋出異常的語句。

這是無效的(因爲throw不能是方法簽名的一部分):

public void test() throw new Exception(); { 
} 

而且這也不是(因爲throws Exception不是語句):

public void test() { 
    throws Exception; 
} 
1

從字面上看,'拋出'本身意味着它應該與行爲相關聯。 'throw'表示它應該與一個動作相關聯。

同樣,作爲行爲的throwsmethod簽名相關聯。

public void test() throws CutomException{ 
    //do whatever 
    throw new CustomException 
} 

上述method有扔CustomExceptionthrows)的特質,如果method體內引發做同樣的(throw)。

相關問題