Javascript 什么';抛出非错误对象的用例是什么?

Javascript 什么';抛出非错误对象的用例是什么?,javascript,error-handling,exception-handling,Javascript,Error Handling,Exception Handling,在JS中,您可以抛出新错误(),抛出'foo'甚至抛出null 为什么要抛出非错误实例?我不是指继承自Error的对象——我指的是其他随机对象或原语 扔就扔。它没有以任何方式连接到设备;您可以抛出任何表达式 但是从Error对象继承可能是一个更好的主意,这正是其他标准内置错误所做的: 创建一个实例,该实例表示与全局函数eval()有关的错误 创建一个实例,该实例表示在抛出JavaScript引擎中的内部错误时发生的错误。例如,“递归太多” 创建一个实例,表示数值变量或参数超出其有效范围时发

在JS中,您可以
抛出新错误()
抛出'foo'
甚至
抛出null

为什么要抛出非
错误
实例?我不是指继承自
Error
的对象——我指的是其他随机对象或原语

就扔。它没有以任何方式连接到设备;您可以
抛出任何表达式

但是从Error对象继承可能是一个更好的主意,这正是其他标准内置错误所做的:


创建一个实例,该实例表示与全局函数eval()有关的错误

创建一个实例,该实例表示在抛出JavaScript引擎中的内部错误时发生的错误。例如,“递归太多”


创建一个实例,表示数值变量或参数超出其有效范围时发生的错误


创建一个实例,该实例表示取消引用无效引用时发生的错误


创建一个实例,该实例表示在eval()中解析代码时发生的语法错误


创建一个实例,该实例表示变量或参数类型无效时发生的错误


创建一个实例,该实例表示在向encodeURI()或decodeURI()传递无效参数时发生的错误

所有这些对象通常都是从Error对象继承的,因此尽管抛出任意对象是合法的,但抛出Error对象或从Error继承的对象可能更有意义,就像Javascript本身一样


有几个例子可以说明正确的方法。

谁知道呢?也许有人会这样设计一个系统。这有什么区别?我认为这个问题可能更适合程序员.SE。(不过,tbh,我对此也很好奇。)抛出一个字符串仍然会显示控制台中的字符串…@Krumia这个问题对程序员来说不太合适-它会很快被否决并在那里关闭,建议阅读:@Alpha see over^^^^这没有回答我的问题,这基本上是错误的“为什么要抛出字符串或
null
?”子文本是原语(或其他非
错误
对象),抛出时,不要提供堆栈跟踪之类的内容。@boneskull如果有人不想要/需要堆栈跟踪怎么办?捕获堆栈跟踪的成本相对较高。@boneskill:如果你想变得草率,基本上可以抛出字符串或null。