我需要了解java異常處理的優先級。執行捕捉優先級
我有一個類控制器,有一個類NodeManager具有類NameManager。 NameManager有一個方法:
public LriNode getLriNode(...) throws HttpErrorException
{
if(condition)
throw new HttpErrorException (status);
}
類節點管理器使用中的前一個方法如下
public void nodeWriter(...) throws HttpErrorException
{
...
try
{
//this can throw an HttpErrorExeption
lriNode = nameManager.getLriNode(resourceName);
...
}
catch (HttpErrorException e)
{
if(e.getStatus().name().equals(HttpStatus.NOT_FOUND))
{
//here can be thrown an HttpErrorExeption too
do work
}
else
{
e.printStackTrace();
}
}
}
終於類控制器使用下列
@RequestMapping(method=RequestMethod.PUT, value="document/{name}")
public ModelAndView putDocument(@RequestBody String body, @PathVariable String name, HttpServletResponse response, HttpServletRequest request)
{
Source source = new StreamSource(new StringReader(body));
try
{
NodeManager.nodeWriter(...);
return new ModelAndView(XML_VIEW_NAME, "document", document);
}
catch (HttpErrorException e)
{
response.setStatus(e.getStatus().value());
e.printStackTrace();
}
return null;
}
那麼前面的方法,那就是:當NameManager拋出一個HttpErrorException
時,我期望NodeManger的內的try-catch塊方法將執行到例外。它發生的是該控件返回到Controller類,並且它的try-catch塊被執行。看起來nodeWriter()
方法中的throws HttpErrorException
語句在內部try-catch塊上具有優先級。
任何人都可以解釋我這樣的異常處理優先系統嗎?
據我所知,目前還沒有這樣的異常處理優先系統。正如你指出的那樣,你可以在NodeWrite的catch語句中引發HttpErrorExeption。我認爲是這樣。 – darlinton