簡體   English   中英

Java - 可拋出異常

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

假設expThrowable引用。

如果它是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM