在Java中创建自己的异常
此代码不起作用。错误:找不到符号。这是Head First Java书籍中的示例 如果我们将类的名称从TestExceptions更改为ScaryException,那么它工作正常。为什么会这样? 是否需要将类名与我们在自定义异常情况下引发的异常相同 是否有必要将类名与我们所处的异常相同 在自定义异常情况下引发 是的,这是必要的 如果您想使用在Java中创建自己的异常,java,exception,Java,Exception,此代码不起作用。错误:找不到符号。这是Head First Java书籍中的示例 如果我们将类的名称从TestExceptions更改为ScaryException,那么它工作正常。为什么会这样? 是否需要将类名与我们在自定义异常情况下引发的异常相同 是否有必要将类名与我们所处的异常相同 在自定义异常情况下引发 是的,这是必要的 如果您想使用TestException,则更改此行throw new TestException() 你可以从中得到更多的例子。看来你的假设是正确的。要么应该有一个名为
TestException
,则更改此行throw new TestException()代码>
你可以从中得到更多的例子。看来你的假设是正确的。要么应该有一个名为ScaryException的单独异常类,您没有添加该类,要么名称应该是ScaryException而不是TestExceptions。因为TestExceptions正在扩展Exception,所以后者就是这样 ScaryException.java
public class TestExceptions extends Exception {
public static void main(String[] args)
{
String test = "no";
try {
System.out.println("start try");
doRisky("no");
System.out.println("end try");
} catch( ScaryException se) {
System.out.println("scaryexception");
} finally {
System.out.println( "finally") ;
}
System.out.println("end of main");
}
static void doRisky(String test) throws ScaryException {
System.out.println("start risky");
if ("yes".equals(test)) {
throw new ScaryException();
}
System.out.println("end risky");
return;
}
}
Main.java
public class ScaryException extends Exception {
public ScaryException(String exceptionMsg){
System.out.println("in ScrayException: " +exceptionMsg);
}
}
也许这个例子会让你明白
是的,自定义异常类和java文件的名称应该相同。通过编写扩展异常,您正在创建一个自定义异常。因此,在您的示例中,您创建了TestException,但试图抛出不存在的ScaryException 是的,这是必要的。如果您想使用TestException
,那么更改此行抛出新的TestException()代码>这是什么:ScaryException在JDK中?必须使用相同的名称来定义类以及在何处使用它。这并不是特例。这是编程的基础,有更新吗?
public class Main {
public static void main(String[] args) {
String test = "no";
try {
System.out.println("start try");
doRisky("yes");
System.out.println("end try");
}
catch( ScaryException se) {
System.out.println("in catch");
}
finally {
System.out.println( "finally") ;
}
System.out.println("end of main");
}
static void doRisky(String test) throws ScaryException {
System.out.println("start risky");
if ("yes".equals(test)) {
throw new ScaryException("Scary Exception thrown from doRisky");
}
System.out.println("end risky");
return;
}
}