我正在开发一个自定义Exception类,其中具有以下构造函数:

public class UserException extends Exception
{
    string message;
    public UserException() {
        super();
    }

    public UserException(String message, Throwable cause)
    {
        super(message, cause);

        this.cause = cause;
        this.message = message;
    }
}

然后创建一个新的自定义异常,如下所示:
private Camera.PreviewCallback SetPreviewCallBack() throws UserException {
    .......
    // Something went wrong
    throw new UserException("Something failed.", new Throwable(String.valueOf(UserExceptionType.CaptureFailed)));
 }

但是当我插入throw new UserException(...)时,它告诉我用try/catch包围它!那不是主意,不是吗?我想在需要抛出自定义异常时抛出这些异常,而不必用更多的new Exceptions子句替代try/catch

所以,我做错了什么?我的误会是什么?

最佳答案

除了Eran的答案外,您还可以使自定义Exception扩展RuntimeException,而无需捕获它。

10-02 03:29