안녕하세요. 제임스 입니다.
이번에는 자바 스크립트를 이용한 개발 중 발생하는 오류 종류와 예외 처리 방법에 대해 알아 보겠습니다.
프로그래밍 중 발생할 수 있는 오류에는 Syntax Errors, Runtime Errors 그리고 Logical Errors 등 세가지 정도가 있습니다.
■ Syntax Errors
Syntax Error 는 구문 오류로 Parsing error 라고도 불립니다.
이는 컴파일 타임에 검출되며 Syntax Error 가 수정되지 않으면 프로그램은 컴파일이 되지 않습니다.
<script type="text/javascript">
window.print("Syntax Error 예제";
</script>
위 코드는 소 괄호를 닫지 않아 Syntax Error 를 발생하게 됩니다.
자바스크립트 상에서 Syntax 오류가 발생할 경우 해당 오류 코드가 포함된 동일 쓰레드 상에만 오류 처리가 되고 다른 쓰레드의 코드들은 오류가 없는것 처럼 처리되어 실행 됩니다.
■ Runtime Errors
Runtime Error 는 exception 이라고도 불립니다.
이는 컴파일 및 인터프리터 작업은 성공적으로 끝나고 프로그램이 실행중에 발생하는 오류 입니다.
<script type="text/javascript">
window.runtimeErrorExample();
</script>
위 코드는 runtimeErrorExample 이라는 함수를 호출 하려고 했으나 이는 없는 함수를 호출 하려 하면서 Runtime Error 가 발생하게 됩니다.
■ Logical Errors
Logical Error 는 원인을 파악하기 가장 어려운 케이스입니다. 구문 오류도 Runtime 오류도 아닙니다.
이는 비지니스 로직 또는 요구 사항에 따라 개발이 되었지만 예상했던 응답값이 내려 오지 않았을 경우 발생 할 수 있습니다.
이는 비지니스 로직 또는 요구사항에 대해 재검증 작업이 필요 하므로 가장 찾기 어려운 케이스가 되겠습니다.
■ 예외 처리
try ~ catch ~ finally 구문을 이용하면 위와 같은 오류가 발생 하였을 경우 원하는 처리가 가능합니다.
<script type="text/javascript">
try {
// 실행할 코드
}
catch (e){
// 오류 발생시 실행할 코드
}
finally{
// 정상여부에 무관하게 항상 마지막에 호출 될 코드
// 없어도 되는 코드 구문
}
</script>
위 코드는 try ~ catch ~ finally 구문을 간단히 정리 했습니다.
try 가 있으면 catch 는 무조건 따라와야 합니다. 실과 바늘 같은 관계죠.
그런데 finally 는 항상 특정 코드를 호출 해야 하는 경우가 아니라면 굳이 작성하지 않아도 됩니다.
Runtime Error 설명중 사용한 코드에 try ~ catch ~ finally 를 적용해보겠습니다.
<script type="text/javascript">
try {
// window 오브젝트에 없는 함수 호출 시도
// --> runtime error 발생
window.runtimeErrorExample();
}
catch (e){
// 오류 내용을 alert 으로 처리
alert("Error: " + e.description );
}
finally{
// 항상 호출 시킬 코드
alert("항상 호출 되는 finally !!!");
}
</script>
위와 같이 작성 했습니다.
결과는 쉽게 예상 가능합니다.
runtimeErrorExample() 이라는 함수가 없기 때문에 catch 구문에서 alert 를 호출하게 되면 내용은 아래와 같을 겁니다.
javascript runtime error : runtimeErrorExample is undefined
그리고 마지막으로 "항상 호출 되는 finally !!!" 라는 문구를 가진 alert 이 한번더 보여지게 됩니다.
이번에는 오류 종류와 예외 처리 방법에 대해 간략하게 정리 했습니다.
그럼 저는 이만 :)
▼ 도움이 되었다면 아래 하트 클릭 한번 부탁 드립니다 ▼
감사합니다 :D
'javascript' 카테고리의 다른 글
[ 자바스크립트 코딩 ] 새창 띄우기 (4) | 2017.12.19 |
---|---|
[자바스크립트 코딩] 문자열을 숫자로 변환하기 (4) | 2017.10.11 |
[자바스크립트 코딩] 자바스크립트 배열 초기화 (491) | 2017.08.31 |
[자바스크립트 코딩] 자바스크립트로 다른 URL 호출하기 (502) | 2017.08.28 |
자바스크립트 URL 인코딩 (4) | 2017.07.24 |