2013-10-02 50 views
0

從不顯示異常。 擴展Exception類並重寫方法toString。然後調用它。根據條件它應該顯示哈哈,但它不顯示任何內容..也沒有錯誤。自定義清除不投擲

class Excp extends Exception { 

     public String toString() { 
      return "hahah"; 

     } 
    } 

    public class exc { 

     boolean a = false; 

     void hey() throws Excp { 

      if (a) 
       throw new Excp(); 

     } 

     public static void main(String... s) { 

      try { 
       new exc().hey(); 
      } catch (Excp e) { 
       System.out.println(e); 
      } 

     } 
    } 

回答

2

你的條件

if(a) 

將返回false如你intiialized a=false。因此,if塊將不執行該語句

throw new Excp(); 
2

這裏

{ 
    if(a) 
    throw new Excp(); 
} 

A是false。永遠不要置身於這種情況下,因爲在初始化對象時你沒有做到真實。

嘗試

try 
    { 
     Excp exc = new Excp(); 
     exc.a= true; 
     exc.hey(); 
    } 

旁註:

1)請遵循命名約定。

2)提供封裝。

3)始終格式化您的代碼。

+0

+1只是幾秒鐘的差異 –

+1

@JunedAhsan你打敗了我很多次我的朋友:) –

+0

,我覺得非常愚蠢的現在:(。什麼是一個糟糕的錯誤 – user2837260

1

我認爲,你希望有自己的錯誤消息自定義異常,如果是的話,你可以用做贏得這樣

class MyException extends Exception{ 
    MyException(String errorMsg){ 
     super(errorMsg); 
    } 
} 

class Test{ 
    public static void main(String[] args){ 
      if(someCondition) 
       throw new MyException("My error message"); 
    } 
}