Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
beego
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
beego
Commits
fda84120
Commit
fda84120
authored
Oct 30, 2014
by
astaxie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix #893
parent
57e62e5e
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
10 additions
and
23 deletions
+10
-23
context.go
context/context.go
+3
-1
router.go
router.go
+7
-22
No files found.
context/context.go
View file @
fda84120
...
...
@@ -31,6 +31,7 @@ import (
"strings"
"time"
"github.com/astaxie/beego"
"github.com/astaxie/beego/middleware"
"github.com/astaxie/beego/utils"
)
...
...
@@ -69,7 +70,8 @@ func (ctx *Context) Abort(status int, body string) {
panic
(
e
)
}
// last panic user string
panic
(
body
)
ctx
.
ResponseWriter
.
Write
([]
byte
(
body
))
panic
(
beego
.
USERSTOPRUN
)
}
// Write string to response body.
...
...
router.go
View file @
fda84120
...
...
@@ -831,7 +831,9 @@ func (p *ControllerRegistor) recoverPanic(rw http.ResponseWriter, r *http.Reques
if
err
==
USERSTOPRUN
{
return
}
if
_
,
ok
:=
err
.
(
middleware
.
HTTPException
);
ok
{
if
he
,
ok
:=
err
.
(
middleware
.
HTTPException
);
ok
{
rw
.
WriteHeader
(
he
.
StatusCode
)
rw
.
Write
([]
byte
(
he
.
Description
))
// catch intented errors, only for HTTP 4XX and 5XX
}
else
{
if
RunMode
==
"dev"
{
...
...
@@ -863,9 +865,10 @@ func (p *ControllerRegistor) recoverPanic(rw http.ResponseWriter, r *http.Reques
}
else
{
// in production model show all infomation
if
ErrorsShow
{
handler
:=
p
.
getErrorHandler
(
fmt
.
Sprint
(
err
))
handler
(
rw
,
r
)
return
if
handler
,
ok
:=
middleware
.
ErrorMaps
[
fmt
.
Sprint
(
err
)];
ok
{
handler
(
rw
,
r
)
return
}
}
else
{
Critical
(
"the request url is "
,
r
.
URL
.
Path
)
Critical
(
"Handler crashed with error"
,
err
)
...
...
@@ -884,24 +887,6 @@ func (p *ControllerRegistor) recoverPanic(rw http.ResponseWriter, r *http.Reques
}
}
// there always should be error handler that sets error code accordingly for all unhandled errors.
// in order to have custom UI for error page it's necessary to override "500" error.
func
(
p
*
ControllerRegistor
)
getErrorHandler
(
errorCode
string
)
func
(
rw
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
handler
:=
middleware
.
SimpleServerError
ok
:=
true
if
errorCode
!=
""
{
handler
,
ok
=
middleware
.
ErrorMaps
[
errorCode
]
if
!
ok
{
handler
,
ok
=
middleware
.
ErrorMaps
[
"500"
]
}
if
!
ok
||
handler
==
nil
{
handler
=
middleware
.
SimpleServerError
}
}
return
handler
}
//responseWriter is a wrapper for the http.ResponseWriter
//started set to true if response was written to then don't execute other handler
type
responseWriter
struct
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment