2017-07-19 60 views
0

如何在java中捕获这种异常?如何在Java的函数中抛出用户定义的异常并在别处捕获它们?

throw new Exception("Error") { 
    // Here is what makes the exception user-defined. 
    public String getMessage() { 
     return "Here is your user-defined exception!"; 
    } 
}; 
+1

你可否详细说明“在别处抓住他们?”? – Akshay

+0

这不是用户定义的异常。 –

+2

@SureshAtta - 是的。这不是一个>>有用的<<用户定义的异常。 –

回答

1

你所做的是创建一个Exception的匿名子类。你可以捕捉它的唯一方法是赶上Exception

提示:你在做什么是毫无意义的。如果用户定义的例外是正常(非匿名)类,则只有有用。你必须能够名称他们赶上他们......如果你不能捕捉到一个异常(独立于它的超类),那么它没有任何用处。


也许你正在尝试做的可能是通过声明异常为私有静态嵌套类。这样可以防止它被抓到封闭类之外。但它仍然可以被命名并因此被捕获到在封闭类中声明的方法。

+0

但是如果我只想捕获特定类型的异常而不是所有的异常。 – md612

+0

那么你不能用这样的例外来做到这一点。你需要定义一个合适的>>名为<<异常类的扩展(比如说)的异常类。 –

+0

我现在明白了。 – md612

1

因为这是一个匿名子类异常的,它没有名字,所以你只能用一般的catch子句捕获它:

catch (Exception e) { 

} 

有时使用匿名类实例是不一个好主意。这是一个很好的例子,其中匿名类应该使用而不是。你应该定义一个常规的自定义异常类,这将允许你有一个特定的catch子句。

+0

Ooops我偶然编辑了你的答案。回滚。抱歉。 –

相关问题