typescript - 我应该在构造函数中抛出异常吗
问题描述
如果我有一个三角形类,像这样:
export default class Triangle {
sides: number[]
constructor(...sides: number[]) {
this.sides = sides
}
kind() {
// returns type of triangle
{
}
如果传入构造函数的边没有创建一个真正的三角形,那么在创建类时(例如在构造函数中)还是在调用函数时抛出错误更好?
有这个答案,说它在 Java 中没问题,我确信它在 TypeScript 中有效。我只是想知道在一般的 OOP 和具体的 TypeScript 方面是否有“最佳实践”。
解决方案
在构造函数中抛出是完全可以接受的。通常最好的做法是快速失败并尽早失败。例如,在您的情况下,最好在构造函数中抛出,以便可以及早将错误暴露给负责发送错误数据的代码。如果您在实际使用三角形方法时稍后抛出,则将被该异常中断的代码没有错(他们无法采取不同的措施来防止异常)。这通常意味着您必须找到创建对象的位置,才能解决错误。
首先,构造函数的主要职责之一是确保对象只能在有效状态下创建。因此,如果参数会导致对象处于无效状态,则抛出不仅是可以接受的,而且这也符合构造函数首先存在的原因。
推荐阅读
- python - 如何按顺序计算列表的重复数
- javascript - 仅在 page.goto(url) 实际加载页面时执行 page.evaluate()
- php - 用 php 代码对 php 代码进行基准测试是一种可靠的方法吗?
- git - 如何在不推送到远程的情况下将 origin/master 带到最新的提交?
- c - 如何用 BNO055 测量 Z 轴的方向差?
- python-3.x - ModuleNotFoundError:没有名为“aiohttp”的模块
- proxy - 将快递应用重定向到外部网站,导致代理错误
- charts - 使用 Tree Map 的 Vega 图表,文本覆盖在矩形框之外
- ssl - 远程服务器响应时间长的问题
- twitter-bootstrap - 在本地使用 twitter 引导程序