[英]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.