[ JavaScript ] 예외 처리

한대희·2023년 6월 17일
0

JavaScript

목록 보기
20/23

예외 처리란 ?

  • 프로그램을 실행하다가 문제가 발생하면 프로그램은 실행을 멈추게 된다. 따라서 발생할 수 있는 문제를 미리 고려해서 처리해 주는 것을 예외 처리 라고 한다.
  • 예외 처리를 해주면 오류가 발생해서 프로그램이 중단되는 것을 방지할 수 있다.

예외 처리를 하지 않은 경우

//🔥 현재 hello라는 함수를 정의하지 않은 상태에서 호출을 했으므로 에러가 발생할 것이다.
//🔥 그러면 hello()다음에 있는 console.log('end')는 실행되지 못한다.
console.log('start')
hello()
console.log('end')

예외 처리 방법

1. try, catch, finally 문

  • try, catch, finally문은 모두 중괄호 안의 명령을 실행 하게 된다.
  • try 블록 에서는 실행할 명령을 작성하고, catch 블록 에서는 try 블록에서 에러가 발생 하면 실행할 명령을 작성한다.
  • try문에서 에러가 발생하면 catch 블록에 error 객체가 전달 된다.
//😀 add라는 함수서 선언되지 않은 상태에서 호출되었기 때문에 catch문에 error객체가 전달 된다.
try {
    add()
}catch (error) {
    console.log('error',error)
    console.log('name', error.name)
    console.log('des', error.message)
}
//🔥 error 객체
instrument.ts:113 error ReferenceError: add is not defined
    at <anonymous>:2:5
//🔥 error 객체 안에 있는 name 프로퍼티
instrument.ts:113 name ReferenceError
//🔥 error 객체 안에 있는 message 프로퍼티
instrument.ts:113 des add is not defined
  • finally문은 예외가 발생하든, 발생하지 않든 상관 없이 try블록 다음에 실행될 명령을 작성한다.
  • finally문은 생략이 가능한데 사용하게 된다면 아래의 형태를 띈다.
try {
	실행할 코드
} catch (error) {
	try에서 error가 발생 했을 때 실행할 코드
} finally {
	try에서 에러가 발생 하던지 안 하던지 무조건 실행되는 코드
}
  • 🔥 이렇게 try, catch, finally문으로 예외 처리를 해준다면 try문에서 에러가 발생하더라도 다음 코드가 실행이 되어 프로그램이 중단되는 것을 방지할 수 있다.

2. throw 문

  • try,catch문에서는 에러가 발생하면 catch에 error객체가 전달이 되어 해당 객체에 들어 있는 에러의 이름이나 메세지를 사용하였다.
  • throw문을 사용하면 사용자가 직접 예외를 만들면서 에러 메세지를 지정할 수 있다.
  • 아래와 같은 형태로 작성한다.
throw 메세지
  • 아래의 예제를 살펴 보자
let obj = {name:'hdh', age:30}
//😀 현재 obj에는 height라는 프로퍼티가 없기 때문에 사용자가 height에 관한 value를 원한다면
//😀 height 프로퍼티가 없다는 메시지를 띄우게 할 것이다.
try {
    if(!obj.height) {
        throw "height 프로퍼티가 없습니다."
    }
} catch (err) {
    console.error(err)
}

//🔥 그러면 아래와 같이 메세지가 출력 된다.
height 프로퍼티가 없습니다.

3. throw new Error 문

  • throw문은 catch에 오류 메세지만을 전달하지만 throw new Error를 사용하면 try, catch문에서 처럼 error 객체를 전달하게 된다.
try {
    if(!obj.height) {
        throw new Error("height 프로퍼티가 없습니다.")
    }
} catch (err) {
    console.error(err)
    console.error(err.name)
    console.error(err.message)
}
//🔥 err 객체
VM614:6 Error: height 프로퍼티가 없습니다.
    at <anonymous>:3:15
(익명) @ VM614:6
//🔥 err 객체의 name프로퍼티는 Error가 된다.
VM614:7 Error
//🔥 err 객체의 message 프로퍼티는 작성한 메세지가 된다.
(익명) @ VM614:7
VM614:8 height 프로퍼티가 없습니다.
profile
개발 블로그

0개의 댓글

관련 채용 정보