在 Java/Android 中抛出自定义异常

我正在开发一个自定义 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/catchnew Exceptionstry/catch

那么,我做错了什么呢?我误解了什么?


答案 1

除了Eran的答案之外,您还可以自定义 Exception扩展 ,这不需要被捕获。RuntimeException


答案 2

如果引发此异常的方法不处理它(即它没有捕获它),它必须在子句中声明它,因为这是一个已检查的异常。throws

public void yourMethod () throws UserException
{
    ...
    throw new UserException("Something failed.", new Throwable(String.valueOf(UserExceptionType.CaptureFailed)));
    ...
}

推荐