mirror of https://github.com/gin-gonic/gin.git
panic if err is nil on c.Error
A panic here provides a more informative stack trace than the panic which would otherwise occur while errors are being collected.
This commit is contained in:
parent
d4a53101c3
commit
781cbd19f0
|
@ -144,7 +144,11 @@ func (c *Context) AbortWithError(code int, err error) *Error {
|
|||
// It's a good idea to call Error for each error that occurred during the resolution of a request.
|
||||
// A middleware can be used to collect all the errors
|
||||
// and push them to a database together, print a log, or append it in the HTTP response.
|
||||
// Error will panic if err is nil.
|
||||
func (c *Context) Error(err error) *Error {
|
||||
if err == nil {
|
||||
panic("err is nil")
|
||||
}
|
||||
var parsedError *Error
|
||||
switch err.(type) {
|
||||
case *Error:
|
||||
|
|
|
@ -852,6 +852,13 @@ func TestContextError(t *testing.T) {
|
|||
assert.Equal(t, c.Errors[1].Type, ErrorTypePublic)
|
||||
|
||||
assert.Equal(t, c.Errors.Last(), c.Errors[1])
|
||||
|
||||
defer func() {
|
||||
if recover() == nil {
|
||||
t.Error("didn't panic")
|
||||
}
|
||||
}()
|
||||
c.Error(nil)
|
||||
}
|
||||
|
||||
func TestContextTypedError(t *testing.T) {
|
||||
|
|
Loading…
Reference in New Issue