# Exception
框架異常處理,支持兩種方式處理程序錯誤
* DotWeb.ExceptionHandler
* 自定義錯誤處理中間件
本節主要描述通過設置DotWeb.ExceptionHandler來自定義處理異常。
## 服務端
~~~go
package main
import (
"errors"
"fmt"
"github.com/devfeel/dotweb"
"strconv"
)
func main() {
//初始化DotServer
app := dotweb.New()
//初始化App必要設置
InitApp(app)
//設置路由
InitRoute(app.HttpServer)
// 開始服務
port := 8080
fmt.Println("dotweb.StartServer => " + strconv.Itoa(port))
err := app.StartServer(port)
fmt.Println("dotweb.StartServer error => ", err)
}
func PanicError(ctx dotweb.Context) error {
panic("my panic error!")
}
func ReturnError(ctx dotweb.Context) error {
return errors.New("return new error")
}
// InitRoute init routes
func InitRoute(server *dotweb.HttpServer) {
server.Router().GET("/panic", PanicError)
server.Router().GET("/return", ReturnError)
}
// InitApp init app's setting
func InitApp(app *dotweb.DotWeb) {
//設置自定義異常處理接口
app.SetExceptionHandle(func(ctx dotweb.Context, err error) {
//TODO:you can use your owner logging error message
ctx.WriteString("oh, 系統出錯了! ", err.Error())
})
}
~~~
啟動服務后
1、訪問 http://127.0.0.1:8080/panic
返回如下:
~~~
oh, 系統出錯了! my panic error!
~~~
2、訪問http://127.0.0.1:8080/return
返回如下:
~~~
oh, 系統出錯了! return new error
~~~
以上,通過設置ExceptionHandle自動處理panic或者返回的error信息
## 示例代碼
https://github.com/devfeel/dotweb-example/blob/master/exception