본문 바로가기

JavaScript

JavaScript - 에러와 에러객체

  • 자바스크립트는 프로그램 실행중 에러가 발생하면 프로그램을 중단하고, 에러객체를 콘솔에 찍어준다.
  • 에러객체는 name, message 프로퍼티가 있다.

 

아래는 가장 흔하게 볼 수 있는 에러이다.

  • referenceError
  • typeError
  • syntaxError

이 중 syntaxError는 아예 프로그램을 시작하기 전부터 에러라고 알려준다.

의도적으로 에러객체 만들어서 에러내기

1. 에러 객체 생성

const error = new TypeError(‘타입에러가 발생했다.’);
console.log(error.name);
console.log(error.message);

2. 에러 발생

throw error;

 

에러핸들링

try catch문
try{
	// 코드
} catch(error){
	// 에러가 발생했을 때 동작할 코드
} finally{
	// 항상 실행할 코드
}
  • try문안에서 에러가 발생한 경우, 그 아래의 코드는 동작하지 않고 바로 catch문으로 넘어간다.
  • catch문에서는 발생한 에러객체를 마라미터로 받고, console.error(error)을 통해서 평소보던 에러 모습으로 콘솔에 남길 수 있다.
  • finally문은 에러의 발생여부와 상관없이 항상 실행된다.
try{
	console.log(‘first’);
	const animal = ‘dog’;
	animal = ‘cat’;
	console.log(‘second’);
} catch(e){
	console.log(‘에러 발생’);
	console.error(e);
}

위 코드의 결과는 아래와 같다.

first
에러발생
TypeError: Assignment to constant variable(에러객체)

 

만약 animal='cat'; 부분을 주석처리하고 실행한다면(에러를 제거한다면) 결과는 아래와 같다.

first
second

try catch문 활용하기

  • 에러가 발생해도 프로그램을 중단시키지 않을 수 있다.
  • try catch문은 실행이 가능한 에러를 다루는데, (syntax에러는 실행 불가능 에러이므로 다룰 수 없다.)
  • 실행 가능한 에러를 예외(exception)이라고 부르며
  • 실행가능한 에러를 다루는 것은 예외처리(exception handling)이라고 부른다.
function printAnimals(animals){
	for(cont animal of animals){
		console.log(animal);
	}
}

const firstAnimals = [‘dog’, ‘cat’, ‘duck’, ‘mouse’];
printAnimals(firstAnimals);

const secondUser = { name: ‘Ann’ };
printAnimals(secondUser);

const secondAnimals = [‘chicken’, ‘rabbit’, ‘cow’];
printAnimals(secondAnimals);

위의 코드는 printAnimals(secondUser);  부분에서 에러가 발생하기때문에, secondAnimals라는 변수는 생성이 되지 않는다.

따라서 secondAnimals를 아규먼트로 넣은 함수도 실행되지 않는다.

에러가 발생했음을 알려주고, 중단없이 프로그램을 실행시키려면 아래와 같이 작성한다.

function printAnimals(animals){
	try{
		for(cont animal of animals){
			console.log(animal);
		}
	} catch(err){
		console.error(err);
		alert(`${err.name}에러가 발생했습니다.`);
	}
}

이렇게하면 중단없이 secondAnimals도 잘 출력된다.

 

 

finally문에서 발생하는 에러 잡기

try{
	try{
		// 실행할 코드
	} catch(err){
		// 에러가 발생했을 때 실행할 코드
	} finally{
		// 항상 실행할 코드
	}

} catch(err){
	finally문에서 에러가 발생했을 때 실행할 코드
}

위와같이 try catch문을 이중으로 사용할 수 있다.

 

'JavaScript' 카테고리의 다른 글

JavaScript - 모듈화  (0) 2023.10.11
JavaScript - 배열 함수 및 유용한 내부 기능  (0) 2023.10.11
JavaScript - 구조분해  (0) 2023.10.11
JavaScript - 객체의 프로퍼티  (0) 2023.10.11
JavaScript - Spread  (0) 2023.10.11