Javascript中的错误和异常有啥区别?
Posted
技术标签:
【中文标题】Javascript中的错误和异常有啥区别?【英文标题】:What's the difference between Error and Exception in Javascript?Javascript中的错误和异常有什么区别? 【发布时间】:2013-04-15 02:06:21 【问题描述】:似乎Error
和Exception
是同一个东西:它们都可以用throw
语句抛出并用try catch
块捕获。
【问题讨论】:
一点点谷歌搜索永远不会出错,java67.blogspot.nl/2012/12/… ""exceptions" 是指可以捕获和控制的错误(运行时)。与只是语法错误并完全破坏编译器的“错误”相反......“ - forums.digitalpoint.com/threads/… 【参考方案1】:try
throw "throwing string";
catch (ex)
console.log(ex);
如果我们运行此代码,我们将观察到 catch 子句将使用 throw 接收 无论我们抛出什么关键词。这意味着如果我们抛出字符串,我们将收到字符串,如果我们抛出对象,我们将收到对象,如果我们抛出数字,我们将收到数字。
注意:所以如果我们抛出错误,我们将收到错误。
因此结论是我们使用 throw 关键字 抛出的任何东西都将被视为异常。如果我们不捕捉(或处理)它,那么我们的 javascript 代码就会崩溃。
【讨论】:
【参考方案2】:JavaScript 语法
错误和异常在 JavaScript 中是语法上的同义词。该语言仅实现Error
关键字(通过window.Error
)。您可以使用Error.constructor
定义自定义错误,它以name
和message
作为参数。
JavaScript 错误
还有行号糖可用于跟踪代码中出现的错误。 JavaScript 只有Error
。无论您听到人们谈论的是 Exceptions
还是 Errors
,在 JavaScript 中他们指的是同一个东西。
浏览器会做出区分:ReferenceError
(当访问一个名称在堆中不存在的变量时,或者当你打错字时(更多 here.),TypeError
也是一个已知的 JS错误,更多here。
JavaScript 异常
已知的 JavaScript Exception
是 DOM Exception 8
。当您访问未准备好的对象时会发生这种情况,例如尚未完成请求的XMLHttpRequest
。
实施
当使用try catch
或try catch finally
块时,您将同时处理JavaScript Exception
和Error
。代码方面的差异没有影响。
在幕后,浏览器使用相同的window.Error
constructor
。 Exception
是带有 name
和 message
的 Error
实例,其中包含“异常”。
试试:var myCustomError = new Error("myException", "An exception occurred.");
。 “异常”是字符串中的文本。更多关于Error
here。
约定
按照惯例,Error
和 Exception
之间是有区别的。 Error
表示明显违规。 TypeError
或 ReferenceError
表示您未遵循语言规范。
当您在完成之前访问XMLHttpRequest
响应时,将引发Exception
。 Error
是“你违反了法律”的呼喊,Exception
是“快到了!”垫在肩上。希望类比有所帮助!
【讨论】:
一个让我印象深刻的细微差别是 DOMException 的 message 属性是只读的,而我看到的所有其他错误都有一个可写的 message 属性。可能还有更多是只读的,我只是没遇到过。 惯例位是我不同意的。【参考方案3】:基于lecture,错误由JavaScript引擎抛出,异常由开发者抛出。它只是命名约定。
JavaScript 抛出错误 开发者抛出异常在技术方面是相同的结构(事物)。
【讨论】:
那是清脆的 :) 我不认为 W3schools 是最可信或最权威的来源 - 并且它没有说明任何理由来证明这个答案。【参考方案4】:我认为错误是您不应该尝试捕捉的严重错误 异常是应该被捕获的东西,只要可以处理它。
错误是指代码中出现错误或无效的情况。它可能会导致内存错误,这是不应该发生且无法处理的事情。
而当代码中满足某些条件时,异常会抛出一些东西。它可能与真正的错误不对应。
【讨论】:
以上是关于Javascript中的错误和异常有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
java中错误(error)和异常(exception)有啥主要区别?
java语言中error和exception有啥区别?final和finally有啥区别?