TIL

JavaScript 챕터 8 - 예외 처리 고급

김영재0412 2022. 12. 4. 23:08

자바스크립트는 다른 프로그래밍 언어와 비교해서 대체적으로 예외가 거의 발생하지 않는 프로그래밍 언어이며 이는 프로그램에 수많은 버그를 일으킬 수 있는 요소가 되기도 한다. 그래서 개발자가 예외를 강제로 발생시켜줘야 하는 경우가 많다.

 

예외 객체

 

try {

} catch (error) {

}

//name : 예외 이름
//message : 예외 메세지

try catch 구문을 사용할 때 catch의 괄호 안에 입력하는 식별자가 예외 객체이다. 아무 식별자를 입력해도 괜찮지만, 일반적으로 e나 exception이라는 식별자를 사용한다.

 

try {
	const array = new Array (999999999999999)
} catch (error) {
	console.log(error)
   	console.log()
    console.log(`예외 이름 : ${error.name}`)
    console.log(`예외 메세지 : ${error.message}`)
}

// 자바스크립트에서 배열의 크기는 4,294,967,295까지 가능하다

 

 

예외 강제 발생

 

상황에 따라서 예외를 강제로 발생시켜야 하는 경우도 있으며 예외를 강제로 발생시킬 때는 throw 키워드를 사용한다.

 

throw 문자열

// 단순하게 예외를 발생시킨다.

throw new Error(문자열)

// 조금 더 자세하게 예외를 발생시킨다.

 

예시

function divide (a, b) {
	if( b === 0){
    	throw '0으로는 나눌 수 없습니다.'
      }
    return a / b 
   }
   
 console.log(divide(10,2))
 console.log(divide(10,0))

 

 

 

예외를 강제로 발생시키기

 

function test(object) {
	console.log(object.a + object.b)
 }
 
 test({})

 

일반적인 프로그래밍 언어라면 object는 빈값이기에 a,b가 존재하지않아 예외를 발생할 것이고 존재하지 않는 것을 더하므로 더할때도 예외를 발생한다.

 

하지만 자바스크립트는 object의 a,b는 undefined로 나오며 undefined + undefined는 NaN이 나오며 오류없이 코드가 진행되는 걸 확인 할 수 있다.

 

이처럼 자바스크립트는 undefined와 NaN이라는 값이 있어 다른 프로그래밍 언어에 비해서 예외를 많이 발생하지 않아 강제로라도 예외를 강제적으로 발생해 인지시켜줄 필요가 있다.

 

function test(object) {
	if(object.a !== undefined && object.b !== undefined){  
		console.log(object.a + object.b)
        } else {
        	throw new Error ("a속상과 b속성을 지정하지 않았습니다")
        }
 } 
 
 test({})

 

 

 

확인문제 3

 

try {
	console.log('try 구문입니다.')
    const array = ['사과', '바나나', '귤']
    array.forEach(()=> {
    	throw '예외를 강제로 발생시킵니다'
    })
   } catch (error) {
	console.log('catch 구문입니다')
    } finally {
    console.log('finally 구문입니다')
    }

'TIL' 카테고리의 다른 글

미들웨어  (0) 2022.12.08
ORM과 관계형 데이터베이스  (0) 2022.12.08
Package.json  (0) 2022.12.04
MongoDB, Mongoose  (0) 2022.11.28
JavaScript의 ES  (0) 2022.11.27