2017-12-22 22 views
1

을 처리 감지 : 파일이 정상 하나를 대신 특수 처리를 할 존재하지 않는 경우 내가 원하는 무엇FS 나는 다음과 같은 기능을 가지고 내 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); 
    }); 

. 하지만 파일이 내 콜백을 통해 존재하지 않는다는 것을 어떻게 알 수 있습니까?

답변

1

파일/디렉토리가 존재하지 않으면 ENOENT 오류가 발생합니다. 그런 다음 switch 또는 if 절을 사용하여 다른 결과를 처리 할 수 ​​있습니다.

모양을 존재하지 않는 파일/디렉토리에 의해 반환 된 전형적인 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) 
} 

또는 EPERM과 같이 여러 유형의 오류를 확인하려는 경우 프로그램에 파일/디렉토리를 읽을 수있는 권한이 없을 때 발생하며 switch - 절을 사용하십시오.

switch (err.code) { 
    case 'ENOENT': 
    return special_handle(err) 
    case 'EPERM': 
    return eperm_handle(err) 
    case default: 
    return normal_handle(err) 
}