fix #366
Showing
1 changed file
with
18 additions
and
7 deletions
| ... | @@ -369,15 +369,30 @@ func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request) | ... | @@ -369,15 +369,30 @@ func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request) |
| 369 | if _, ok := err.(middleware.HTTPException); ok { | 369 | if _, ok := err.(middleware.HTTPException); ok { |
| 370 | // catch intented errors, only for HTTP 4XX and 5XX | 370 | // catch intented errors, only for HTTP 4XX and 5XX |
| 371 | } else { | 371 | } else { |
| 372 | if RunMode == "dev" { | ||
| 373 | if !RecoverPanic { | ||
| 374 | panic(err) | ||
| 375 | } else { | ||
| 376 | var stack string | ||
| 377 | Critical("Handler crashed with error", err) | ||
| 378 | for i := 1; ; i++ { | ||
| 379 | _, file, line, ok := runtime.Caller(i) | ||
| 380 | if !ok { | ||
| 381 | break | ||
| 382 | } | ||
| 383 | Critical(file, line) | ||
| 384 | stack = stack + fmt.Sprintln(file, line) | ||
| 385 | } | ||
| 386 | middleware.ShowErr(err, rw, r, stack) | ||
| 387 | } | ||
| 388 | } else { | ||
| 372 | if ErrorsShow { | 389 | if ErrorsShow { |
| 373 | handler := p.getErrorHandler(fmt.Sprint(err)) | 390 | handler := p.getErrorHandler(fmt.Sprint(err)) |
| 374 | handler(rw, r) | 391 | handler(rw, r) |
| 375 | } else { | 392 | } else { |
| 376 | if !RecoverPanic { | 393 | if !RecoverPanic { |
| 377 | // go back to panic | ||
| 378 | panic(err) | 394 | panic(err) |
| 379 | } else { | 395 | } else { |
| 380 | var stack string | ||
| 381 | Critical("Handler crashed with error", err) | 396 | Critical("Handler crashed with error", err) |
| 382 | for i := 1; ; i++ { | 397 | for i := 1; ; i++ { |
| 383 | _, file, line, ok := runtime.Caller(i) | 398 | _, file, line, ok := runtime.Caller(i) |
| ... | @@ -385,15 +400,11 @@ func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request) | ... | @@ -385,15 +400,11 @@ func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request) |
| 385 | break | 400 | break |
| 386 | } | 401 | } |
| 387 | Critical(file, line) | 402 | Critical(file, line) |
| 388 | if RunMode == "dev" { | ||
| 389 | stack = stack + fmt.Sprintln(file, line) | ||
| 390 | } | ||
| 391 | } | 403 | } |
| 392 | if RunMode == "dev" { | ||
| 393 | middleware.ShowErr(err, rw, r, stack) | ||
| 394 | } | 404 | } |
| 395 | } | 405 | } |
| 396 | } | 406 | } |
| 407 | |||
| 397 | } | 408 | } |
| 398 | } | 409 | } |
| 399 | }() | 410 | }() | ... | ... |
-
Please register or sign in to post a comment