본문 바로가기

IT 관련/javascript & jquery

[javascript] try...catch문

자바스크립트의 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 절을 통해서 에러를 다루는 방법을 간단히 알아보았습니다.

에러를 발생시키지 않는 코드도 중요하지만 에러가 발생하는 경우에 대한 대비도 잘해야 합니다.

이런 부분을 잘 생각해서 즐거운 코딩 하시기 바랍니다.

 

그럼 이만.

끝.