2013-03-05 88 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的任何子女。