자바스크립트는 코드가 실행되는 도중에 에러가 발생하면 자동으로 에러 객체를 생성한다.
에러메시지는 에러객체의 이름name 프로퍼티와 메시지message 프로퍼티 로 구성되어있는 객체이다
대표적인 에러 종류
1) ReferenceError 존재하지 않는 변수나 함수를 호출 시
2) TypeError 잘못된 방식으로 자료형을 다루려고 할 때
3) SyntaxError 문법에 맞지않는 코드
의도적으로 에러 만들기
1. 새로운 에러 객체 만들기 : 에러객체의 이름을 함수처럼 호출해서 아규먼트로 원하는 메시지 전달
const error = new TypeError('원하는 메시지를 출력합니다.');
이렇게 하면 name: TypeError, message : '원하는 블라블라' 프로퍼티를 갖는 에러 객체가 만들어짐
console.log(error.name);
console.log(error.message);
2. 에러 발생시키기
throw error;
에러 동작 & 그 뒤의 코드는 실행되지 않음 (프로그램 종료)
try...catch 문
try {
// 코드
} catch (error) {
// 에러가 발생했을 때 동작할 코드
}
try {
console.log('에러 전');
const codeit = '코드잇';
console.log(codeit)
codeit = 'codeit'; > 위에서 const 로 선언한 변수 codeit 를 재할당하려고 해서 오류가 난다
const language = 'JavaScript';
console.log(language);
} catch (error){ > 에러 객체는 error 또는 err 또는 e 로 많이 쓴다
console.log('에러 후 동작되는 코드');
console.log(error); > 에러 객체가 나타난다
console.error(error); > log 가 아닌 error 메소드를 사용하면 '실제 에러 메시지'처럼 출력된다
console.log(e.name); > 에러객체 이름 프로퍼티
console.log(e.message); > 에러객체 메시지 프로퍼티
}
//출력값
에러 전
코드잇
에러 후 동작되는 코드
try문 내에서 오류 발생 후의 코드는 실행되지 않고 바로 catch 문으로 넘어간다
활용편쓰
함수내부에서 try catch 문 사용하기
printMember 함수는 파라미터로 배열을 받는것을 가정하고 작성된 코드임
codeit 변수에 객체를 받아서 함수를 실행시키고 있음 -> 오류가 발생, 프로그램이 종료됨
이때 try catch 문을 사용하면 오류가 나더라도 프로그램이 종료되지않을 수 있음
try문과 catch문 각각은 코드 블록이므로 각 블록에서 let이나 const로 선언된 변수는 해당 블럭 밖에서 사용될 수 없음
try...catch문은 실행이 가능한 코드 내에서의 에러를 다룬다 (?)
ex 문법에 어긋나는 코드(변수에 하이픈 사용 등) 를 작성하면 SyntaxError 발생하면서 코드를 실행조차 하지 않는다
실행이 가능한 코드에서 발생한 에러를 예외 Exception 이라고 하고,
해당 에러를 다루는 것을 예외처리 Exception Handling이라고 한다
try {
// 실행할 코드
} catch (err) {
// 에러가 발생했을 때 실행할 코드
} finally {
// 항상 실행할 코드
}
try 문에서 에러 발생 시 > catch 코드가 모두 실행된 다음 finally 코드 실행
try 문에서 에러 없으면 > try 코드가 모두 실행된 다음에 finally 코드 실행
finally 문에서 에러 처리가 필요하면 다시 try,,,catch문을 중첩해서 사용한다
'개발 공부 일지 > JavaScript' 카테고리의 다른 글
자바스크립트 - 배열 메소드 .forEach .map (1) | 2024.07.22 |
---|---|
자바스크립트 - 문법 정리 (조건부 연산자 ~ 예외 처리) (0) | 2024.07.20 |
자바스크립트 - 구조분해 Destructing (0) | 2024.07.20 |
자바스크립트 - 옵셔널 체이닝 ?. (0) | 2024.07.20 |
자바스크립트 - 모던한 프로퍼티 표기법 (축약 표기) (0) | 2024.07.19 |