자바스크립트의 try...catch문을 이용하면 브라우저가 에러를 처리하기 전에 에러를 먼저 가져올 수 있습니다.
에러가 발생할만한 코드를 try 블록에 두고 에러가 발생하면 처리하는 코드는 catch 블록에 두는 것입니다.
try {
// do something
} catch(ex) {
handleError(ex);
}
try 블록에서 에러가 발생하면 실행이 즉시 중단되고 catch 블록으로 바로 넘어가는데 이때 catch 블록에는 에러 객체가 넘어옵니다. 따라서 발생한 에러를 어떻게 처리해야 할지는 에러 객체를 살펴보면 가장 좋은 방법을 알아낼 수 있습니다. 그리고 finally 절을 추가할 수도 있습니다. finally 절은 에러 발생 여부와 상관없이 반드시 실행되어야 할 코드를 입력합니다.
finally 절은 다르기에 살짝 까다로울 때가 있습니다.
예를 들어, try 절에 return 문이 있으면 finally 절이 실행된 후에야 return 문이 실행됩니다. 이런 점 때문에 finally 절은 자주 쓰이지는 않지만, 필요할 때는 에러 처리에 굉장히 강력한 도구입니다.
throw를 쓸 것인가. 아니면 try... catch절을 쓸 것인가
일반적으로 많은 개발자가 에러를 발생시키는 것과 try...catch 문으로 에러를 잡는 것 중 어느 것이 나을지 고민합니다. 에러는 애플리케이션 스택의 가장 깊은 곳인 자바스크립트 라이브러리에서 발생시켜야 합니다. 애플리케이션 로직을 다루는 코드에서는 라이브러리에서 던진 에러를 잡아서 잘 처리할 수 있어야 하므로 에러 처리 기능을 잘 갖춰야 합니다.
에러 처리를 잘하려면 애플리케이션 로직을 작성할 때 왜 이 함수를 호출하는지 알아야 합니다. catch 절이 비어있는 try... catch는 코드상에 절대 있으면 안 되고 어떠한 방식으로든 에러 처리를 해야 합니다.
예를 들어 다음 예제와 같은 코드는 절대로 있어서는 안 됩니다.
// 절대로 지양해야 함.
try {
//do something
} catch(ex) {
// 아무 처리도 안 함
}
이런 경우는 에러가 발생하면 어떻게 에러를 복구할지도 생각해두어야 합니다. 정확히는 개발 중일 때 에러를 복구하는 방법과 실세 서버에 배포된 후 복구하는 방법이 다르기는 하지만 상관없습니다.
에러를 무시하지 않고 처리하는 게 중요합니다.
이상으로 try... catch 절을 통해서 에러를 다루는 방법을 간단히 알아보았습니다.
에러를 발생시키지 않는 코드도 중요하지만 에러가 발생하는 경우에 대한 대비도 잘해야 합니다.
이런 부분을 잘 생각해서 즐거운 코딩 하시기 바랍니다.
그럼 이만.
끝.
'IT 관련 > javascript & jquery' 카테고리의 다른 글
javascript 브라우저 탐지 (0) | 2022.01.21 |
---|---|
자바스크립트 이벤트 처리 javascript (0) | 2022.01.16 |
javascript NULL 비교 (0) | 2022.01.12 |
가독성 좋은 javascirpt 이름 규칙 (0) | 2022.01.10 |
가독성이 좋은 자바스크립트[javascript] 코딩 - 스타일 가이드라인2 (0) | 2022.01.09 |