我的问题很简单。我们应该还是不应该在 Sling Models/WCMUsePojos 中处理/捕获异常?
细节:
我们有几个调用 OSGi 服务方法的 SlingModels,当任何异常被抛出时,我们都会将其捕获到 SlingModel,然后我们在模型中进行 @PostConstruct 方法
slingHttpResponse.sendError(500);
这似乎对我们不起作用,响应状态是 500(在浏览器的网络选项卡中检查),但页面无论如何都会加载,而不是加载我们的 500.jsp 页面或设置的“内部服务器错误页面”。
事实上,对我们有用的是将异常重新抛出到默认处理程序。这成功地加载了 500.jsp 页面。
前任。
@PostConstruct // THIS WORKS
public void init() throws Exception{
try{
// Business Logic calling Injected OSGi Service Methods
}
catch(Exception e){
// Log exception and rethrow
LOG.error("Exception in Model",e);
throw e;
}
}
上述实现是否理想?这适用于下面的代码,它不适用于我们
@PostConstruct // THIS DOES NOT WORK PROPERLY
public void init() throws Exception{
try{
// Business Logic calling Injected OSGi Service Methods
}
catch(Exception e){
// Log exception and SEND ERROR
LOG.error("Exception in Model",e);
slingHttpResponse.sendError(500);
}
}