![]() |
1
183
更新代码,将原型分配给error.prototype,instanceof和断言工作。
但是,我只会抛出您自己的对象并检查name属性。
基于批注编辑
在看了这些评论并试图记住我为什么要将原型分配给
控制台输出就是这个。
这证实了我遇到的“问题”是错误的堆栈属性是行号,其中
另外,请注意
|
![]() |
2
85
以上所有的答案都很糟糕——真的。即使是那个有107个UPS的!真正的答案在这里,伙计们: Inheriting from the Error object - where is the message property? DR:
A. The理性
B.这样做的方法是从构造函数返回应用的结果,并以通常复杂的javascript方法设置原型:
您可能会做一些小技巧来枚举
|
![]() |
3
20
如果有人对如何创建自定义错误感兴趣 和 获取堆栈跟踪:
|
![]() |
4
14
在ES2015中,您可以使用
这不会修改全局
当然,你可能需要使用像
|
![]() |
5
7
本标准的这一节可以解释
在这种情况下,
使用以下代码进行测试似乎可以证明这实际上是在发生的事情:
运行此命令时将生成以下输出:
|
![]() |
6
6
我也有类似的问题。我的错误应该是
我的解决方案:
使用node.js运行的结果:
这个错误通过了我的三个标准,尽管
|
![]() |
7
6
|
![]() |
8
4
Accoring to Joyent 您不应该弄乱stack属性(我在这里给出的很多答案中都看到了),因为它会对性能产生负面影响。他们是这样说的:
我喜欢并且想提及 their idea of wrapping the original error 这是一个很好的替代品。 下面是我如何创建自定义错误的方法,考虑到上面提到的: ES5版本:
ES6版本:
我已经将我的解决方案放入一个模块中,这里是: https://www.npmjs.com/package/rerror |
![]() |
9
2
我只需要实现类似的东西,然后发现堆栈在我自己的错误实现中丢失了。我要做的是创建一个虚拟错误并从中检索堆栈:
|
![]() |
10
2
我使用构造函数模式来创建新的错误对象。我定义了
原型链
比如一个
你可以在上面检查这个片段 gist . 实施
用法customError构造函数可以接收许多参数来构建消息,例如
这就是自定义错误的外观:
|
![]() |
11
1
构造函数需要像工厂方法一样,并返回所需的内容。如果需要其他方法/属性,可以在返回对象之前将它们添加到对象中。
不过我不知道你为什么要这么做。为什么不只用
|
![]() |
12
1
|
![]() |
13
1
|
![]() |
14
0
|
![]() |
15
0
|
![]() |
16
0
产量
|
![]() |
17
0
我喜欢这样做,所以消息在stacktrace或toString中是相同的,我可以只传递一个名称或名称和消息。在引发HTTP错误时很有用,例如,处理程序可以
|
![]() |
18
-1
为用户定义的错误类型的每个实例尝试一个新的原型对象。它允许
请注意,一个额外的条目将在原本正确的堆栈之前进行处理。 |
![]() |
19
-3
更简单的方法。可以使对象从错误对象继承。 例子:
我们要做的是使用函数call(),它调用错误类的构造函数,因此基本上与在其他面向对象的语言中实现类继承相同。 |
![]() |
20
-3
有一个 excellent example :
|
|
lfox · 如果列中不存在某个值,则停止代码执行 2 年前 |
![]() |
zaen · 将值传递到异常字符串消息中 2 年前 |
![]() |
Zephyr · 如何在双ListView选择系统上实现过滤器? 6 年前 |
![]() |
Aave · 错误数组长度的特定异常 6 年前 |