fs detect 处理不同的错误类型
fs detect handle different error types
在我的 nodejs 应用程序中,我有以下功能:
const special_handle= function(err){
console.error("Special Handled",err);
}
const normal_handle= function(err){
console.error("Normal Handled",err);
}
const callback = function(err,mime,data){
if(err) {
if(/*file does not exist*/){
return special_handle(err);
} else {
return normal_handle(err);
}
}
}
fs.readFile(fileFullPath,(err,data)=>{
if(err){
return callback(err);
}
const mimeType = mime.lookup(fileFullPath);
callback(null,mimeType,data);
});
我想要的是当文件不存在时做一个特殊处理而不是做正常的处理。但是我怎么知道我的回调文件不存在?
如果 file/directory 不存在,您将收到 ENOENT
错误。然后,您可以使用 switch 或 if 子句来处理不同的结果。
不存在的 file/directory 返回的典型 err
对象如下所示:
{ Error: ENOENT: no such file or directory, open 'test.js' errno: -2, code: 'ENOENT', syscall: 'open', path: 'test.js' }
所以如果你想检查文件是否存在,你可以这样做:
if (err.code === 'ENOENT') {
return special_handle(err)
} else {
return normal_handle(err)
}
或者如果你想检查多种类型的错误,例如当你的程序没有权限读取 file/directory 时会抛出的 EPERM
,你可以使用 switch
-子句:
switch (err.code) {
case 'ENOENT':
return special_handle(err)
case 'EPERM':
return eperm_handle(err)
case default:
return normal_handle(err)
}
在我的 nodejs 应用程序中,我有以下功能:
const special_handle= function(err){
console.error("Special Handled",err);
}
const normal_handle= function(err){
console.error("Normal Handled",err);
}
const callback = function(err,mime,data){
if(err) {
if(/*file does not exist*/){
return special_handle(err);
} else {
return normal_handle(err);
}
}
}
fs.readFile(fileFullPath,(err,data)=>{
if(err){
return callback(err);
}
const mimeType = mime.lookup(fileFullPath);
callback(null,mimeType,data);
});
我想要的是当文件不存在时做一个特殊处理而不是做正常的处理。但是我怎么知道我的回调文件不存在?
如果 file/directory 不存在,您将收到 ENOENT
错误。然后,您可以使用 switch 或 if 子句来处理不同的结果。
不存在的 file/directory 返回的典型 err
对象如下所示:
{ Error: ENOENT: no such file or directory, open 'test.js' errno: -2, code: 'ENOENT', syscall: 'open', path: 'test.js' }
所以如果你想检查文件是否存在,你可以这样做:
if (err.code === 'ENOENT') {
return special_handle(err)
} else {
return normal_handle(err)
}
或者如果你想检查多种类型的错误,例如当你的程序没有权限读取 file/directory 时会抛出的 EPERM
,你可以使用 switch
-子句:
switch (err.code) {
case 'ENOENT':
return special_handle(err)
case 'EPERM':
return eperm_handle(err)
case default:
return normal_handle(err)
}