# 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