설명
catch 블록이 비어 있거나 로그만 남기고 실패 처리를 하지 않으면 호출자에게 실패가 전달되지 않거나 잘못된 상태로 처리가 계속될 수 있습니다. 로그는 진단에 도움을 주지만 실패 반환이나 복구 동작을 대신하지 않습니다.
잠재적 영향
- 보안 검증 실패가 정상 상태처럼 계속 진행될 수 있습니다.
- 파일, 인증, 암호화 처리 실패가 은폐될 수 있습니다.
해결 방법
- 예외를 로깅하고 호출자에게 실패를 반환하거나 다시 발생시키세요.
- 복구 가능한 예외만 구체적으로 처리하고 복구 동작을 코드로 명시하세요.
예시
변경 전
javascript
try {
verifySignature(input);
} catch (err) {
}
변경 후
javascript
try {
verifySignature(input);
} catch (err) {
logger.error({ err }, "signature verification failed");
throw err;
}
설명:
- 변경 전:
catch블록이 비어 있거나 로그만 남기고 실패 처리를 하지 않으면 호출자에게 실패가 전달되지 않거나 잘못된 상태로 처리가 계속될 수 있습니다. 로그는 진단에 도움을 주지만 실패 반환이나 복구 동작을 대신하지 않습니다. - 변경 후: 오류를 기록한 뒤 다시 던져 정상 처리로 넘어가지 않게 합니다. 로그의 민감한 값은 마스킹하고 접근을 제한하세요.