### 錯誤處理
dotweb支持兩種方式處理程序錯誤
* DotWeb.ExceptionHandler
* 自定義錯誤處理中間件
#### DotWeb.ExceptionHandler
全局設置
~~~
app :=dotweb.New()
//設置自定義異常處理接口
app.SetExceptionHandle(func(ctx dotweb.Context, err error) {
ctx.WriteString("i'm error ", err.Error())
})
~~~
設置以上代碼后,如在handler中有未處理的異常或者直接返回error,均會被該函數捕捉執行
* 我們盡量遵守go的潛規則,盡可能少的直接panic error,那么也可通過在handler函數內return error
~~~
func DefaultError(ctx dotweb.Context) error {
return errors.New("i'm an error!")
}
~~~
特別的:
* dotweb實現了默認的ExceptionHandle
* 通過dotweb#SetDevelopmentMode、dotweb#SetProductionMode 控制異常信息展現
* 若設置為DevelopmentMode,頁面將輸出詳細的異常堆棧信息
* 若設置為ProductionMode,頁面將輸出Internal Server Error字符串
#### 中間件模式
通過實現自定義中間件,recover error,對其做相應處理即可
具體可參考recover中間件。 -- 即將實現