Java異常處理被細分爲Errors,checked exceptions和unchecked exceptions。這個問題是關於例外的。Java Spring引導微服務異常處理
正常的Java異常處理是爲了檢查異常而擴展Exception類,並根據需要通過考慮異常層次來處理它們。
例如爲:
public class ExceptionA extends Exception {}
public class RunClass {
public static void main() {
try {
RunClass runClass = new RunClass();
runClass.doSomething();
} catch(ExceptionA eA) {
// Do ExceptionA related resolutions.
} catch(Exception e) {
// Do Exception related resolutions.
}
}
public doSomething() throws ExceptionA {
throw new ExceptionA();
}
}
但是我看到主要的春天的書籍,甚至與Spring引導和微服務的上下文中提到上網教程總是從RuntimeException的類甚至與@ControllerAdvice延伸。
這明顯違反了Java異常處理的基礎知識。但是仍然有一種觀點認爲,它是用RuntimeException擴展的,因爲這個異常是由@ExceptionHandler方法處理的,並且它在運行時都會被生成和處理。
儘管如此,由於RuntimeException的這種擴展使編譯時異常處理跟蹤不可見,並且很難追溯如何拋出異常。由於這些原因,我仍然相信,使用@ExceptionHandler方法仍然遵循基本的Java檢查和未檢查的異常處理概念。
例如爲:
public class ExceptionRA extends RuntimeException {}
@ContollerAdvice
public class ExceptionHandler {
@ExceptionHandler(ExceptionRA.class)
public String handleException (Exception exception, Model model) {
return "exception";
}
}
@Controller
public class RunClass {
@RequestMapping("/url1")
public doSomething() {
throw new ExceptionRA();
}
}
我應該遵循與@ExcpetionHadler所有的異常情況下的延伸的RuntimeException或遵循Java的檢查基本和unchecked機制@ExceptionHaldler?想法,建議和更正是受歡迎的。
@lexocore:添加了問題 – Chinthaka