1
0
mirror of https://github.com/astaxie/beego.git synced 2025-07-02 14:00:18 +00:00

beego.Context.Abort return immediately

* add common 4XX/5XX HTTP exceptions
This commit is contained in:
Pengfei Xue
2013-11-26 08:46:46 +08:00
parent c7a0298546
commit 76c0636125
3 changed files with 62 additions and 17 deletions

View File

@ -407,29 +407,33 @@ func (p *ControllerRegistor) UrlFor(endpoint string, values ...string) string {
func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
defer func() {
if err := recover(); err != nil {
errstr := fmt.Sprint(err)
if handler, ok := middleware.ErrorMaps[errstr]; ok && ErrorsShow {
handler(rw, r)
if _, ok := err.(middleware.HTTPException); ok {
// catch intented errors, only for HTTP 4XX and 5XX
} else {
if !RecoverPanic {
// go back to panic
panic(err)
errstr := fmt.Sprint(err)
if handler, ok := middleware.ErrorMaps[errstr]; ok && ErrorsShow {
handler(rw, r)
} else {
var stack string
Critical("Handler crashed with error", err)
for i := 1; ; i++ {
_, file, line, ok := runtime.Caller(i)
if !ok {
break
if !RecoverPanic {
// go back to panic
panic(err)
} else {
var stack string
Critical("Handler crashed with error", err)
for i := 1; ; i++ {
_, file, line, ok := runtime.Caller(i)
if !ok {
break
}
Critical(file, line)
if RunMode == "dev" {
stack = stack + fmt.Sprintln(file, line)
}
}
Critical(file, line)
if RunMode == "dev" {
stack = stack + fmt.Sprintln(file, line)
middleware.ShowErr(err, rw, r, stack)
}
}
if RunMode == "dev" {
middleware.ShowErr(err, rw, r, stack)
}
}
}
}