1. 程式人生 > 其它 >Solon 開發進階,五、全域性異常訂閱

Solon 開發進階,五、全域性異常訂閱

所謂“全域性異常”,是指通過事件匯流排釋出的異常。目前框架會把未吃掉的異常釋出到事件匯流排。比如:啟動時產生的異常,或者計劃任務未處理的異常,或請求中未處理的異常。

事件匯流排預設會用 "err.printStackTrace()" 自動列印。如果希望 禁掉 自動列印:

Solon.start(DemoApp.class, args, app->{
    app.enableErrorAutoprint(false);
});

或者對異常進行訂閱,訂閱後也會 禁掉

自動列印。

1、手動訂閱

//獲取系統未處理的異常
Solon.start(DemoApp.class, args, app->{
    app.onError(e->{
        //或者記錄到日誌系統,或者別的處理
        e.printStackTrace();
    }); 
});

或者用“SolonBuilder”,在啟動前就進行訂閱:

new SolonBuilder().onError(e -> {
    //或者記錄到日誌系統,或者別的處理
    e.printStackTrace();
}).start(DemoApp.class, args);

2、註解訂閱

@Component
public class ErrorListener implements EventListener<Throwable> {
    @Override
    public void onEvent(Throwable e) {
        //或者記錄到日誌系統,或者別的處理
        e.printStackTrace();
    }
}

上面提到“全域性異常”,也會包括請求產生的未處理異常。反之,被過濾器吃掉的異常,這裡就不會出現了(可參考 《過濾器、處理、攔截器》 )。

建議請求類的異常交由過濾器處理。