예외처리란?
- 프로그램에서 문제가 발생하면, 프로그램이 실행을 멈추기 때문에, 소스를 작성할 때부터 발생할 만한 오류를 미리 고려하고 대비하는 것
* 예외란?
- 문법적인 실수로 발생하는 오류
→ 문법 오류 뒤에 오는 소스는 실행되지 않아서 프로그램이 중단되기도 함
- 프로그램의 작성 의도와 다르게 사용했을 때
→ 이런 상황을 미리 예상해서 처리해 줌
try, catch, finally
- try : 실행할 코드
- catch : try블록에서 예외가 발생했을 때 실행할 코드
- catch(err)의 err는 instance
- err.__proto__ : ReferenceError 등 무언가 나옴
- err.prototype : undefined
- err가 어떤 에러인지 받아오기 때문에, catch문을 여러개 쓸 필요가 없음 (문법적으로도 그럴 수 없음)
- catch(err)의 err는 instance
- finally : try 블록 이후에 실행할 코드이며 예외와 상관없이 실행됨
<script>
try {
console.log("시작");
add();
console.log("실행 중...");
} catch(err) {
console.log(`오류 발생 : ${err}`);
}
console.log("끝");
</script>
console.error()
- 콘솔 창에 오류를 표시함
- 오류가 발생하면 빨간색으로 표시되기 때문에 일반 메세지와 구별됨
- error 객체는 error.name과 error.message로 구성
<script>
try {
…
}catch(err) {
console.error(`오류 발생 : ${err}`);
console.error(`오류 발생 : ${err.name}`);
console.error(`오류 발생 : ${err.message}`);
}
…
</script>
throw()
- 사용자가 직접 예외를 만들고 오류 메시지를 지정
- throw의 뒤에는 무엇이든 올 수 있으며(문자열, 객체 등등) 이는 catch의 err 인스턴스로 가게 됨
- throw에 여러개의 값을 넣을 수는 없음 (return 1,2;가 안되는 것 처럼)
- 단, 구조분해 형태로 사용할 수는 있음!
try{
throw [1, 2];
}catch([err1, err2]){
console.log(err1); // 1
console.log(err2); // 2
}
<!-- 방법 1 -->
<script>
let json= '{"grade": 3, "age": 25}';
try {
let user = JSON.parse(json);
if (!user.name) {
throw "사용자 이름이 없습니다.";
}
} catch (err) {
console.error(err);
}
</script>
<!-- 방법 2 -->
<script>
let json= '{"grade": 3, "age": 25}';
try {
let user = JSON.parse(json);
if (!user.name) {
throw new Error("사용자 이름이 없습니다.“);
}
} catch (err) {
console.error(err);
}
</script>
'언어 > 자바스크립트(Java Script)' 카테고리의 다른 글
[자바스크립트] JSON (0) | 2024.08.06 |
---|---|
[자바스크립트] HTTP/HTTPS (0) | 2024.08.06 |
[자바스크립트] 이터레이터 & 제너레이터 (0) | 2024.08.06 |
[자바스크립트] Map & Set (0) | 2024.08.06 |
[자바스크립트] 구조 분해 할당 (0) | 2024.08.06 |
댓글