面试题答案
一键面试代码实现
class MyCustomError extends Error {
constructor(message) {
super(message);
this.name = 'MyCustomError';
}
}
选择继承结构的原因
- 保持一致性:继承自内置的
Error
类可以保持与JavaScript原生错误处理机制的一致性。所有原生错误(如SyntaxError
、TypeError
等)都继承自Error
类,这样自定义的错误也能像原生错误一样被try...catch
块捕获和处理。 - 复用功能:
Error
类已经提供了一些有用的属性和方法,例如message
属性用于存储错误信息,通过继承可以直接复用这些功能,无需重新实现。
实际应用场景中的优势
- 错误分类与识别:在特定业务逻辑中,不同类型的错误可能需要不同的处理方式。通过自定义错误类,可以将业务逻辑相关的错误与其他普通错误区分开来。例如,在一个电商系统中,
MyCustomError
可以表示库存不足、订单金额异常等业务特定错误,开发人员在捕获错误时可以根据错误类型进行针对性处理。 - 错误信息传递:自定义错误类可以携带更详细的业务相关信息。在构造函数中,可以添加额外的属性来传递特定业务上下文,帮助开发人员更准确地定位和解决问题。例如,在库存不足的错误中,可以添加库存数量等信息。
- 代码可读性与维护性:使用自定义错误类使代码的错误处理逻辑更清晰。在大型项目中,明确的错误类型有助于团队成员理解代码可能出现的问题以及相应的处理方式,提高代码的可读性和可维护性。