```golang
func withRecover(fn func()) {
defer func() {
handler := PanicHandler
if handler != nil {
if err := recover(); err != nil {
handler(err)
}
}
}()
fn()
}
```
使用
``` golang
withRecover(func() {
//
})
```
err的信息太少了吧。没有stacktrace能够定位问题?不能也就不实用呀。
```golang
var trace [1024]byte
n:=runtime.Stack(trace[:],false)
handle(err,string(trace[:n]))
```
添加runtime的stack 之后,至少可以定位是哪个文件的多少行代码出现了问题。是吧?
#1