node . js 中的错误类别
Node.js 从 JavaScript < Error >类继承了 JavaScript 和系统错误,并保证提供该类可用的属性。使用由 JavaScript 提供的 try…catch 构造处理的抛出机制立即抛出错误的 JavaScript 异常。
Node.js 处理应用运行过程中出现的错误,支持多种错误机制,即如何报告和处理所有这些错误取决于 Error 类型和 API 风格。应用程序代码也会触发用户指定的错误。由 Node.js 生成的所有错误要么是实例,要么是从 Error 类继承的。在 Node.js 中,它在运行下面给出的应用程序时会遇到许多类型的错误:
类:AssertionError:AssertionErrors由< 错误扩展而来。错误 >类。当它检测到一个异常的逻辑冲突已经发生,而这个逻辑冲突不应该发生时,这些错误就会被触发,断言模块就会引发所有这些错误。断言模块抛出的所有错误都是 AssertionError 类的实例。
示例 1:文件名:index.js
// Node.js program to demonstrate
// Assertion error in JavaScript
// Importing Assert module
const assert = require('assert');
console.log("Throws Assertion Error...");
// Comparing equality using assert
assert.strictEqual(
{'Alfa':'hi', 'beta':'hello'},
{'Alfa':'hi', 'beta':'hello'}
);
// Throws AssertionError
使用以下命令运行 index.js 文件:
node index.js
输出:
抛出断言错误
抛出断言错误…… assert . js:101 抛出新的 AssertionError(obj); AssertionError[ERR _ ASSERTION]:值具有相同的结构,但不等于引用: { Alfa: 'hi ',beta: 'hello'} at Object。<匿名>(C:\ Users \ Ajay Kumar \ Desktop \ test 2 . js:12:8)……。操作员:?[32m'strictEqual '?[3900 万]
Class: RangeError: 显示提供的参数不在可接受的值范围内。它可以是数字范围,也可以在选项集之外。
示例 2:文件名:index.js
// Node.js program to demonstrate
// range error in JavaScript
// Importing http module
const http = require('http');
// Creating server with port no
// out of range
var server = http.createServer()
.listen(46456656, (err, res)=>{
// Throws Range Error
});
输出:
抛出范围错误
内部/验证器. js:192 抛出新的 ERR_SOCKET_BAD_PORT(名称,PORT); 范围错误【ERR _ SOCKET _ BAD _ PORT】:options . PORT 应为> = 0 和< 65536。收到 46456656……代码:?[32m'ERR_SOCKET_BAD_PORT '?[3900 万]
Class: ReferenceError: 它指定没有定义任何人试图访问的变量。这种类型的错误指定了代码中的错别字或坏了的程序。引用错误的实例指定了代码中的一个错误,直到应用程序动态运行代码。
示例 3:文件名:index.js
// Node.js program to demonstrate
// Reference error in JavaScript
try {
const alfa = 10;
const beta = alfa + gamma;
// Throws with a ReferenceError
// because gamma is undefined
} catch (err) {
console.log(err.message);
console.log(err);
// Handle the error here.
}
输出:
抛出参考错误
伽马未定义 参考错误:伽马在对象处未定义 。<匿名>(C:\ Users \ Ajay Kumar \ Desktop \ test 2 . js:128:23)……在内部/main/run_main_module.js:17:47
Class: SyntaxError: 指定程序不是有效的 JavaScript,可能是代码求值的结果生成的。这些错误大多是由评估、函数、需求或虚拟机引起的。
示例 4:文件名:index.js
// Node.js program to demonstrate
// Syntax error in JavaScript
try {
// Import vm module
require('vm').runInThisContext('alfa @ beta');
} catch (error) {
// Prints a Syntax Error.
console.log(error);
}
输出:
在新脚本(VM . js:99:7)……内部/main/run_main_module.js:17:47 处抛出语法错误
alfa @ beta 语法错误:无效或意外标记
类:系统错误:由 Node.js 生成的系统错误是由于其运行时环境中的异常而发生的。当应用程序违反操作系统约束时,这些错误是可以预期的。
示例 5:文件名:index.js
// Node.js program to demonstrate
// Reference error in JavaScript
// Importing fs module
const fs = require('fs');
// Callback function
function errorCallback(err, data) {
if (err) {
console.error('There was an error', err);
return;
}
return(data);
}
// Trying to read file that does not exist
fs.readFile('/some/non-existing/file', errorCallback);
输出:
抛出错误
出现错误【错误:ENOENT:没有这样的文件或目录,打开' C:\某些\不存在的\文件' 】{ errno: -4058, 代码:' ENOENT ', syscall: 'open ', 路径:' C:\某些\不存在的\ \文件' }
类:类型错误:它指定提供的参数不是允许的类型。例如,调用一个实际上不存在的函数将是一个类型错误。就像该表单是参数验证一样,它会立即引发类型错误实例。
示例 6:文件名:index.js
// Node.js program to demonstrate
// Type error in JavaScript
try {
if(1) {
if(2) {
console.loo('alfa')
}
}
} catch (error) {
console.log(error);
}
使用以下命令运行 index.js 文件:
node index.js
输出:
抛出类型错误
类型错误:console.loo 不是 Object 处的函数 。<匿名>(C:\ Users \ Ajay Kumar \ Desktop \ test 2 . js:104:15)……在内部/main/run_main_module.js:17:47
参考:T2
版权属于:月萌API www.moonapi.com,转载请注明出处