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