Ste*_*ven 3 custom-exceptions node.js
我不知道这有什么问题,但instanceof似乎不起作用。
应用错误.ts
class AppError extends Error {
public statusCode;
constructor(message, statusCode) {
super(message);
this.name = this.constructor.name;
Error.captureStackTrace(this, this.constructor);
this.statusCode = statusCode || 500;
}
}
export default AppError;
Run Code Online (Sandbox Code Playgroud)
错误请求错误.ts
import AppError from "./AppError";
class BadRequestError extends AppError {
constructor(message?: string) {
super(message || "Client sent a bad request", 400);
}
}
export default BadRequestError;
Run Code Online (Sandbox Code Playgroud)
处理程序
try {
throw new BadRequestError();
} catch (err) {
if (err instanceof AppError) {
responseCallback(err.statusCode, err.message, callback);
} else {
responseCallback(500, "Internal Server Error", callback);
}
}
Run Code Online (Sandbox Code Playgroud)
预期结果:
状态码:400
消息:客户端发送了错误的请求
实际结果:
状态码:500
消息:内部服务器错误
Ste*_*ven 12
解决了!
将此行添加到BadRequestError类。
Object.setPrototypeOf(this, BadRequestError.prototype);
Run Code Online (Sandbox Code Playgroud)
新BadRequestError:
import AppError from "./AppError";
class BadRequestError extends AppError {
constructor(message?: string) {
super(message || "Client sent a bad request", 400);
Object.setPrototypeOf(this, BadRequestError.prototype);
}
}
export default BadRequestError;
Run Code Online (Sandbox Code Playgroud)
参考:https : //stackoverflow.com/a/41429145/8504830
| 归档时间: |
|
| 查看次数: |
3603 次 |
| 最近记录: |