Hprose-java之異常處理
測試環境: IDEA + JETTY + HPROSE
若要獲取介面異常通知(回撥)
需呼叫ServletHolder的setInitParameter方法, key為"event", 值為HproseServiceEvent
示例程式碼:
public class XServletHolder extends ServletHolder {
public XServletHolder(Servlet servlet) {
super(servlet);
this.setInitParameter("event", XServiceEvent.class.getName());
}
}
/**
* Created by Sid on 2016/6/22.
* 記錄當前包所屬程式碼的異常資訊
*/
public class XServiceEvent implements HproseServiceEvent {
String logPrefix;
public XServiceEvent() {
logPrefix = this.getClass().getPackage().getName() + ".";
}
@Override
public void onBeforeInvoke(String s, Object[] objects, boolean b, HproseContext hproseContext) throws Throwable {
}
@Override
public void onAfterInvoke(String s, Object[] objects, boolean b, Object o, HproseContext hproseContext) throws Throwable {
}
@Override
public Throwable onSendError(Throwable throwable, HproseContext hproseContext) throws Throwable {
StringBuffer message = new StringBuffer();
StackTraceElement[] trace = throwable.getStackTrace();
message.append(throwable.toString());
for (StackTraceElement traceElement : trace) {
if (traceElement.getClassName().startsWith(logPrefix)) {
message.append("\n\tat ").append(traceElement);
}
}
Logger.getRootLogger().error(message);
return null;
}
@Override
public void onServerError(Throwable throwable, HproseContext hproseContext) {
}
}
啟動時:
ServletContextHandler handler = new ServletContextHandler(ServletContextHandler.SESSIONS);
handler.setContextPath("/");
handler.addServlet(new XServletHolder(new XXX), "/XXX");
以下是作者原話:
伺服器端有個HproseServiceEvent
通過實現這個介面,並進行設定,就可以記錄異常了。
onSendError 是當伺服器端異常轉發給客戶端時觸發
onServerError 是伺服器端無法傳送資料給客戶端併產生異常時觸發。
在 onSendError 裡面,你還可以丟擲一個新的異常或者返回一個新的異常,來替換傳入的異常。
相關文章
- NodeJS之異常處理NodeJS
- 異常處理機制(二)之異常處理與捕獲
- python異常處理之returnPython
- 異常篇——異常處理
- python 基礎之異常處理Python
- Java之異常處理try{}catch(){}Java
- 溫故之.NET異常處理
- JAVA學習之異常處理Java
- Reactor詳解之:異常處理React
- SpringBoot之全域性異常處理Spring Boot
- 異常處理
- Flask開發技巧之異常處理Flask
- JSP 異常處理如何處理?JS
- 異常-throws的方式處理異常
- React 異常處理React
- JS異常處理JS
- oracle異常處理Oracle
- Python——異常處理Python
- Python異常處理Python
- ThinkPHP 異常處理PHP
- JavaScript 異常處理JavaScript
- JAVA 異常處理Java
- 異常的處理
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- Java 異常處理Java
- Abp 異常處理
- JAVA異常處理Java
- 08、異常處理
- SpringMVC異常處理SpringMVC
- 2.1.3 Python物件導向之異常處理Python物件
- swoft 學習筆記之異常處理筆記
- Python學習之 異常處理詳解Python
- Python穩基修煉之異常處理Python
- java安全編碼指南之:異常處理Java
- tidb之dm叢集同步異常處理TiDB
- 筆記:異常處理之report與render筆記
- SpringBoot部落格開發之異常處理Spring Boot