[英]Java - Throwable to Exception
我目前正在使用 play2 框架。
我有几个抛出exceptions
的类,但 play2s 全局onError
处理程序使用 throwable 而不是异常。
例如,我的一门课程正在抛出NoSessionException
。 如果它是NoSessionException
,我可以检查可抛出对象吗?
只是让它简短。 我们可以将Throwable
传递给Exception
构造函数。
@Override
public void onError(Throwable e) {
Exception ex = new Exception(e);
}
从 Android 中查看此异常
您可以使用instanceof
来检查它是否属于NoSessionException
。
例子:
if (exp instanceof NoSessionException) {
...
}
假设exp
是Throwable
引用。
如果它是 NoSessionException ,我可以检查可抛出对象吗?
当然:
Throwable t = ...;
if (t instanceof NoSessionException) {
...
// If you need to use information in the exception
// you can cast it in here
}
Throwable
是一个类,它是Exception
- 以及它的所有子类 - 子类。 没有什么能阻止您在Throwable
上使用instanceof
。
除了检查它是否为instanceof
之外,您还可以使用 try catch 和 catch NoSessionException
try {
// Something that throws a throwable
} catch (NoSessionException e) {
// Its a NoSessionException
} catch (Throwable t) {
// catch all other Throwables
}
如果您使用的是 Spring,那么为什么不使用特定类型的特定异常处理程序。
您可以拥有一个 GlobalException 处理程序并将其标记到您的控制器
@ControllerAdvice(assignableTypes = {YourController.class})
public class MyGlobalExceptionHandler {
然后你可以有特定的处理程序方法来处理特定的异常。
例如,下面正在处理特定的 ServerWebInputException
@ExceptionHandler(ServerWebInputException.class)
public ResponseEntity<YourResponseObject> handleValidationError(final ServerWebInputException badRequest) {
}
你可以有一个通用的Throwable 处理程序
@ExceptionHandler(Throwable.class)
public ResponseEntity<YourResponseObject> handleThrowable(final Throwable throwable) {
这将是一个干净的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.