Let errors provide their own status.
When calling `ctx.throw`, you're allowed to provide an error object and a status code. The status code is later set as the `status` property of the error object. If no status code is provided, it defaults to 500. However, this happens even if the error object already had a `status` property. This commit allows an error's pre-existing `status` property to be used in conjunction with `ctx.throw`. If the status code is below 500, the error message will be exposed to the user in the HTTP response. It would be nice to have some Error subclasses that always have the same status code, because then we could just write `ctx.throw(new WhateverError())`, and define which 4xx error code we want in the definition of `WhateverError` itself. If, for example, an `AuthenticationError` is always meant to go along with a 401, then it would be nice to just have that knowledge in the class definition.
This commit is contained in:
parent
c96459bc61
commit
0a223f2bb7
1 changed files with 1 additions and 1 deletions
|
@ -71,7 +71,7 @@ var proto = module.exports = {
|
||||||
}
|
}
|
||||||
|
|
||||||
var err = msg instanceof Error ? msg : new Error(msg);
|
var err = msg instanceof Error ? msg : new Error(msg);
|
||||||
err.status = status || 500;
|
err.status = status || err.status || 500;
|
||||||
err.expose = err.status < 500;
|
err.expose = err.status < 500;
|
||||||
throw err;
|
throw err;
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue