[목차]
01. try ~ catch 예외처리
💡
실수, 예상치 못한 사용자 입력, 잘못된 서버 응답 등의 이유 발생시 스크립트가 실행이 중단을 방지하기 위한 처리
스크립트 에러가 발생해도 catch에서 에러 처리하기 때문에 스크립트가 실행이 중단되지 않는다.
02. 문법
동작 순서
👉🏻1️⃣ 먼저 try { } 안의 코드 실행2️⃣ 에러가 없다면, try 안의 마지막 줄까지 실행. catch 블록은 건너뜀
3️⃣ 에러가 있다면, try 안의 코드의 실행이 중단되고, catch(err) 블록 안 코드 실행
error 프로퍼티 종류
👉🏻name : 에러 이름, 정의되지 않은 변수 때문에 발생하는 에러인 경우 ReferenceError가 출력message : 에러 상세 내용을 담고 있는 메시지
stack : 에러 전체 내용 ( name : message )
[코드예제] try catch
try{ name = '홍길동'; // 선언되기 전에 값을 대입 let name; console.log(name); } catch (error) { console.log(error.name); // ReferenceError console.log(error.message); // name변수가 선언되지 않았다라는 에러내용 console.log(error.stack); // 에러 전체 내용 console.log('그다음 실행코드'); // 에러 출력 후 실행 }
03. try ~ catch ~ finally
💡
finally 구문은 항상 실행된다.
동작 순서
👉🏻1️⃣ 먼저 try { } 안의 코드 실행2️⃣ 에러가 없다면, try 안의 마지막 줄까지 실행, catch 블록은 건너뜀, finally 블록 실행
3️⃣ 에러가 있다면, try 안의 코드의 실행이 중단되고, catch(err) 블록 안 코드 실행, finally 블록 실행
[코드예제] try catch finally
/** try { // 예외가 발생될 우려가 있는 코드 집합 } catch(error) { // 예외처리 (사용자에게 예외 발생 메시지 알림 etc) } finally { // 예외가 발생되든 안되든 무조건 코드 실행 } */ // 양의 정수든 음의 정수든 정수의 절대값을 반환하는 함수 function numAbs(num) { if(typeof num == 'number' && Number.isInteger(num)) { return Math.abs(num); } throw new Error('입력하신 값은 정수가 아닙니다.'); } let result = 0; try{ result = numAbs(-12.33); console.log(result); } catch (error) { console.log(error.stack); } finally { console.log('그다음 코드 실행'); }
tag : #javascript #예외처리 #try #catch #finally #name #message #stack
Uploaded by N2T