Node.js util.getSystemErrorName() 方法
util.getSystemErrorName() 方法在 Node.js 标准库的实用程序模块中定义。它用于了解程序中发生的错误类型。通常,此方法在其他方法中使用,以了解该方法是否没有按预期给出响应,因为发生了一些错误,然后是什么类型的错误可以确保我们的程序确实中断。
句法
util.getSystemErrorName( err )
参数:此方法接受单个参数“err”,该参数包含指定错误编号或错误代码的数值。此错误代码来自 Node.js API 本身。
返回值:返回一个字符串名称,即数字错误代码的错误名称。
注意:有一些常见的系统错误映射到特定的错误代码。系统错误和错误代码之间的映射取决于平台。一些常见的系统错误如下所示。
- EACCES (权限被拒绝):当文件试图访问其访问权限被禁止时,会发生此错误。
- EADDRINUSE (地址已在使用中):当尝试将服务器(net、http 或 https)绑定到本地地址时,由于本地系统上的另一台服务器已占用该地址而失败,则会发生这种情况。
- ECONNRESET (对等连接重置):当连接被对等强制关闭时会发生这种情况。这通常是由于超时或重新启动导致远程套接字上的连接丢失造成的。
- EISDIR (是一个目录):当操作需要一个文件,但给出了目录的路径名时,会发生这种情况。
- EMFILE (系统中打开的文件过多):当达到系统上允许的最大文件描述符数时,会发生这种情况,并且在至少关闭一个描述符之前无法满足对另一个描述符的请求。当同时打开多个文件时会遇到这种情况。
- ENOENT (没有这样的文件或目录):当指定路径名的组件不存在即给定路径找不到实体(文件或目录)时,fs 操作通常会引发此错误。
- ENOTDIR (不是目录):当给定路径名的组件存在但不是目录时会发生这种情况。
- ENOTEMPTY (目录不为空):当请求的目录不为预期时会发生这种情况。
- TIMEDOUT (操作超时):当连接建立并发送请求但由于连接方在一段时间后没有正确响应而失败时发生。
示例 1:
// Importing File System module
const fs = require('fs')
// Importing utilities module
const util = require('util')
fs.readdir('file/not/exist', (err, files) => {
if(err){
const errName = util.getSystemErrorName(err.errno)
console.log(`Error Name --> ${errName}`)
console.log(`Error Code --> ${err.errno}`)
}else{
for(let file in files){
console.log(file)
}
}
})
输出:
Error Name --> ENOENT
Error Code --> 4058
说明:程序基本上是获取给定目录中的所有文件和文件夹。 fs.readdir() 方法获取目标目录的路径。如果给定路径无效,则会发生错误,这可能会破坏我们的程序,因此必须处理错误并为用户提供一些有效的输出,以便用户了解错误发生的原因。这里使用 getSystemErrorName() 方法来处理错误,该方法返回发生的错误的名称。
示例 2:
// Importing File System module
const fs = require('fs')
// Importing utilities module
const util = require('util')
fs.readdir('./index.js', (err, files) => {
if(err){
const errName = util.getSystemErrorName(err.errno)
console.log(`Error Name --> ${errName}`)
console.log(`Error Code --> ${err.errno}`)
}else{
for(let file in files){
console.log(file)
}
}
})
输出:
Error Name --> ENOTDIR
Error Code --> 4052
说明:程序基本上是获取给定目录中的所有文件和文件夹。 fs.readdir() 方法获取目标目录的路径。由于给定的路径不是目录而是文件,因此会出现名为 ENOTDIR 的错误。