0

首先我必须说我阅读了以下内容: http: //docs.oracle.com/javase/tutorial/essential/exceptions/index.html

我尝试编译时得到的错误如下:

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");
    }
}
4

2 回答 2

2

Java 异常必须扩展Throwable(直接扩展,或者最好通过扩展Exception或其子类之一间接扩展)。显然你的ScaryException班级没有。

于 2013-03-05T20:47:10.180 回答
1

要编译,ScaryException必须是扩展的类Throwable或其子类之一。要么ScaryException根本不存在,要么不扩展任何Throwable' 子级。

于 2013-03-05T20:47:24.157 回答