forked from mirror/gin
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.
|
// 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
|
// 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.
|
// 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 {
|
func (c *Context) Error(err error) *Error {
|
||||||
|
if err == nil {
|
||||||
|
panic("err is nil")
|
||||||
|
}
|
||||||
var parsedError *Error
|
var parsedError *Error
|
||||||
switch err.(type) {
|
switch err.(type) {
|
||||||
case *Error:
|
case *Error:
|
||||||
|
|
|
@ -852,6 +852,13 @@ func TestContextError(t *testing.T) {
|
||||||
assert.Equal(t, c.Errors[1].Type, ErrorTypePublic)
|
assert.Equal(t, c.Errors[1].Type, ErrorTypePublic)
|
||||||
|
|
||||||
assert.Equal(t, c.Errors.Last(), c.Errors[1])
|
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) {
|
func TestContextTypedError(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue