龙空技术网

列举一下"JavaScript"的六种错误类型

Java架构Monster 89

前言:

此时咱们对“wscratchpadjs”大体比较关心,各位老铁们都需要了解一些“wscratchpadjs”的相关文章。那么小编也在网摘上网罗了一些对于“wscratchpadjs””的相关内容,希望同学们能喜欢,朋友们快快来了解一下吧!

前言:

我们在引用一个不存在的变量时发生的错误。将一个值分配给无法分配的对象,比如对函数的运行结果或者函数赋值。

举个栗子哦~

try { console.log(a) // a 未声明的变量 } catch (e) { if (e instanceof ReferenceError) { console.log(e.name + ": " + e.message); // ReferenceError: a is not defined  }  }

构建一个ReferenceError

try { throw new ReferenceError('Hello', 'someFile.js', 10); } catch (e) { console.log(e instanceof ReferenceError); // true console.log(e.message); // "Hello" console.log(e.name); // "ReferenceError" console.log(e.fileName); // "someFile.js" console.log(e.lineNumber); // 10 console.log(e.columnNumber); // 0 console.log(e.stack); // "@Scratchpad/2:2:9\n" }

如果未声明变量就使用,就会抛出这个异常哦!

二、TypeError

变量或参数不是预期类型时发生的错误。比如使用new字符串、布尔值等原始类型和调用对象不存在的方法就会抛出这种错误,因为new命令的参数应该是一个构造函数。

“举栗子”

try { var a = {} a.go() } catch (e) { if (e instanceof TypeError) { console.log(e.name + ": " + e.message); // TypeError: a.go is not a function }  }
三、EvalError

在ES5以下的JavaScript中,当eval()函数没有被正确执行时,会抛出evalError错误。

“举栗子”

var myEval = eval; myEval("alert('call eval')");

ES5以上的JavaScript中已经不再抛出该错误,但依然可以通过new关键字来自定义该类型的错误提示。

四、RangeError

数值变量或参数超出其有效范围

“举栗子”

try { [].length = -1 } catch (e) { if (e instanceof RangeError) { console.log(e.name + ": " + e.message); // RangeError: Invalid array length }  }
五、SyntaxError

语法错误,比如变量名不规范

“举栗子”

try { var 1  } catch (e) { if (e instanceof SyntaxError) { console.log(e.name + ": " + e.message); // SyntaxError: Unexpected number }  }
六、URIError

给 encodeURI()或 decodeURl()传递的参数无效

举栗子

捕获一个URIError

try { decodeURIComponent('%');} catch (e) { console.log(e instanceof URIError); // true console.log(e.message); // "malformed URI sequence" console.log(e.name); // "URIError" console.log(e.fileName); // "Scratchpad/1" console.log(e.lineNumber); // 2 console.log(e.columnNumber); // 2 console.log(e.stack); // "@Scratchpad/2:2:3\n"}

创建URIError实例

try { throw new URIError('Hello', 'someFile.js', 10);} catch (e) { console.log(e instanceof URIError); // true console.log(e.message); // "Hello" console.log(e.name); // "URIError" console.log(e.fileName); // "someFile.js" console.log(e.lineNumber); // 10 console.log(e.columnNumber); // 0 console.log(e.stack); // "@Scratchpad/2:2:9\n"}

最后,小架有一些资料想分享给大家

关注并私信我“学习”即可领取哦。

标签: #wscratchpadjs