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
- 異常篇——異常處理
- Java之異常處理try{}catch(){}Java
- python異常處理之returnPython
- Reactor詳解之:異常處理React
- JAVA學習之異常處理Java
- 溫故之.NET異常處理
- Node.js之異常處理Node.js
- 異常處理
- Flask開發技巧之異常處理Flask
- python 基礎之異常處理Python
- 【java學習之再遇異常處理】Java
- 異常-throws的方式處理異常
- 異常處理與異常函式函式
- JavaScript 異常處理JavaScript
- ThinkPHP 異常處理PHP
- React 異常處理React
- 08、異常處理
- JAVA 異常處理Java
- JAVA異常處理Java
- Abp 異常處理
- oracle異常處理Oracle
- PowerShell 異常處理
- plsql異常處理SQL
- Swift 異常處理Swift
- JS異常處理JS
- app異常處理APP
- Oracle 處理異常Oracle
- MySQL異常處理MySql
- 異常處理 (轉)
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- 異常的處理
- Java 異常處理Java
- swoft 學習筆記之異常處理筆記
- SpringBoot之全域性異常處理Spring Boot