我想在SpringMVC3中使用帶註釋的「@ExceptionHandler」來捕捉「錯誤」。我可以捕獲throwable和任何異常,但是當我嘗試使用「Error」時,它沒有捕獲異常。任何想法爲什麼?下面的代碼演示了這個問題。即使明確拋出錯誤,爲什麼錯誤沒有被捕獲?
@Controller
@RequestMapping("/test")
public class TestExceptionController {
static final Logger logger = Logger.getLogger(TestExceptionController.class);
@RequestMapping(method = RequestMethod.GET)
public String processData(int intValue) throws InvalidDataException {
if (intValue < 6) {
try {
throw new Exception();
} catch (Exception e) {
throw new InvalidDataException();
}
}
return "test";
}
@ExceptionHandler(InvalidDataException.class)
public ModelMap handleException(InvalidDataException ex) {
logger.debug("exception catched :" + ex);
return new ModelMap();
}
}
上面的代碼捕獲,但下面的代碼不捕獲。爲什麼它沒有捕捉到錯誤?
@Controller
@RequestMapping("/test")
public class TestExceptionController {
static final Logger logger = Logger.getLogger(TestExceptionController.class);
@RequestMapping(method = RequestMethod.GET)
public String processData(int intValue) throws Error{
if (intValue < 6) {
try {
throw new Exception();
} catch (Exception e) {
throw new Error();
}
}
return "test";
}
@ExceptionHandler(Error.class)
public ModelMap handleException(Error ex) {
logger.debug("exception catched :" + ex);
return new ModelMap();
}
}
未來,請編輯您現有的問題,而不是創建一個新的問題。我已經投票結束了原文。 –
您使用的是哪個版本的Spring3? – andyb
這是否回答了您的問題:http://stackoverflow.com/questions/8184593/why-error-is-not-getting-caught-even-when-explicitly-thrown/8212177#8212177 –