Son*_*hja 14 java android exception-handling exception
我正在开发一个自定义的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;
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个新的自定义异常,如下所示:
private Camera.PreviewCallback SetPreviewCallBack() throws UserException {
.......
// Something went wrong
throw new UserException("Something failed.", new Throwable(String.valueOf(UserExceptionType.CaptureFailed)));
}
Run Code Online (Sandbox Code Playgroud)
但是,当我插入throw new UserException(...)它时,它告诉我用它包围try/catch!! 这不是主意,不是吗?当我需要抛出自定义异常时,我想抛出自定义异常,而不会new Exceptions使用更多的try/catch子句.
那么,我做错了什么?我误解了什么?
Era*_*ran 10
如果抛出此异常的方法不处理它(即它没有捕获它),它必须在throws子句中声明它,因为这是一个经过检查的异常.
public void yourMethod () throws UserException
{
...
throw new UserException("Something failed.", new Throwable(String.valueOf(UserExceptionType.CaptureFailed)));
...
}
Run Code Online (Sandbox Code Playgroud)
如果您的自定义异常从Exception类扩展,则必须将其处理(使用try-catch)或传递给调用者(使用throws).如果你只想将它留给运行时来处理异常,你需要从RuntimeException类扩展它因为它是你的场景中的第一种情况,你应该这样做:
public void surroundingMethod() throws UserException{
throw new UserException("Something failed.", new Throwable(String.valueOf(UserExceptionType.CaptureFailed)));
}
Run Code Online (Sandbox Code Playgroud)
这实际上会将您的异常传递给调用者,所以现在调用者有责任使用try-catch处理它或者再次传递它.
所以,你需要修改调用指令
public void callingMethod () {
try {
surroundingMethod();
} catch (UserException ex){
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29759 次 |
| 最近记录: |