제일 먼저 확인 할 수 있었던 예시는 try catch문이다. 이는 아마 대부분의 개발자들이 열심히 사용하고 있을 것이다. 이 로직을 사용하게 되면 자신이 원하는 구동을 구현할 수 있기 때문이다. try문에 원하는 동작 및 예외가 되어야 할 사항을 적으면 catch문에서 알아서 잡아준다.
아래의 코드는 try catch 문에 대한 예시다.
function DataValidationCheck(dataToSubmit: BookModel) {
try {
if (
dataToSubmit.serialNumber.length === SERIAL_NUMBER_LENGTH &&
dataToSubmit.author !== "" &&
dataToSubmit.publisher !== "" &&
dataToSubmit.title !== ""
) {
setValidation(true)
} else {
setValidation(false)
throw new Error("데이터 형식이 올바르지 않습니다.");
}
} catch (e: any) {
setValidation(false)
throw new Error("데이터 형식이 올바르지 않습니다.");
}
}
catch에 잡히고자 하는 조건 조건문을 통해 넣었고, 나머지는 오류로 잡히게 하였다. 이를 통해 한 가지 정상 흐름을 제시하고 나머지를 오류로 예외 처리하게 하였다. 또한 호출 라이브러리를 API로 감싸 하나의 예외 유형을 반환하게 하였기에 위의 예외 처리 시 지키면 좋은 조건 중 다수를 충족한 코드이다. throw를 통해 조건에 맞지 않는 오류를 예외로 던졌다. 본문 중 ‘오류 코드보다 예외를 사용하라’를 만족하는 것으로, 이를 통해 예외임을 가시적으로 나타낼 수 있다.
여기서 아쉬운 점이 있다면, 이미 if로 조건을 처리하였기 때문에 else로 다시 처리를 할 필요가 없어 보이는 점이다. 더 많은 조건을 충족하게 하려면 예외에 의미를 부여할 수 있다. setValidation() 부분에서 오류에 따른 위치 및 이유를 나타날 수 있게 한다면 더 좋은 코드가 될 것이다. 그리고 에러의 메시지 역시 세분화해서 알려준다면 ‘예외에 의미를 제공하라’를 만족할 수 있을 것이다.
댓글