2013-03-05 87 views
0

首先我必須說我讀了以下內容:http://docs.oracle.com/javase/tutorial/essential/exceptions/index.htmlthrowable不會編譯

我得到的,當我嘗試編譯錯誤是:

TestException.java:14: error: incompatible types 

static void doRisky(String test) throws ScaryException 
               ^
required: Throwable 
found: ScaryException 

TestException.java:19: error: incompatible types 
         throw new ScaryException(); 
            ^
required: Throwable 
found: ScaryException 

TestException.java:34: error: incompatible types 
       catch (ScaryException se) 
         ^
    required: Throwable 
    found: ScaryException 

3 errors 

我假設的錯誤信息給我一些暗示型的,但我就是不明白它是什麼。

import java.lang.*; 
/** add this as to get it to compile */ 
class ScaryException extends Exception 
{ 
/** how come I can't put code here? */ 
} 

public class TestException { 

    static void doRisky(String test) throws ScaryException{ 
     System.out.println ("start risky");  
     if ("yes".equals(test)) { 
      throw new ScaryException(); 
     } 
     System.out.println("end risky"); 
    } 

    public static void main(String [] args){ 
     String test = "no"; 
     try{ 
      System.out.println("start try"); 
      doRisky(test); 
      doRisky("yes"); 
      System.out.println("end try"); 
     } 
     catch (ScaryException se){ 
      System.out.println("Got What " + se); 
     } 
     finally{ 
      System. out. println("finally") ; 
     } 

     System.out.println("end of main"); 
    } 
} 
+0

您的'ScaryException'擴展了throwable的子類嗎?通常是一個'java.lang.Exception'? – PermGenError 2013-03-05 20:47:52

回答

2

Java異常必須(通過延伸Exception或它的子類中的一個直接地,或間接地優選)Throwable延伸。顯然你的ScaryException類沒有。

+0

好的,那該怎麼解決? – user1984948 2013-03-05 21:02:18

+0

最簡單的方法是將「擴展異常」添加到「ScaryException」的定義中,就像'類ScaryException extends Exception'一樣。當然,假設你還沒有去做一些古怪的事情,比如重新創建異常處理。 :) – cHao 2013-03-05 21:26:10

1

爲了編譯,ScaryException必須是擴展Throwable或它的一個子類的類。 ScaryException根本不存在,或者它不擴展Throwable的任何子女。