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