구문 오류 | 예외 |
---|---|
괄호 개수를 잘못 입력하는 등의 오류로 코드가 실행조차 안되는 것 | 코드 실행 중간에 발생하는 오류 |
//구문 오류 예제
//프로그램 시작 확인
console.log('#프로그램이 시작되었습니다!')
//구문 오류가 발생하는 부분
console.log('괄호를 닫지 않는 실수를 하다'
⇒ syntax error
//예외/런타임 에러 예제
//프로그램 시작 확인
console.log('#프로그램이 시작되었습니다')
//구문 오류 발생하는 부분
console.rog('log를 rog로 입력 ')
⇒ 일단 코드 자체는 실행이 됨, console.rog는 함수가 아니라고 함
기본 예외 처리 : 조건문을 사용해서 예외가 발생하지 않게 하는 것
<body>
</body>
//querySelector() 메소드로 추출된 문서 객체가 없는 경우
document.addEventListener('DOMContentLoaded', () => {
const h1 = document.querySelector('h1')
h1.textContent = '안녕'
})
⇒ 조건문을 이용하여 h1이 존재할 때만 textContent 속성을 변경하도록
//querySelector() 메소드로 추출된 문서 객체가 없는 경우
document.addEventListener('DOMContentLoaded', () => {
const h1 = document.querySelector('h1')
if (h1) {
h1.textContent = '안녕'
} else {
console.log('h1 태그를 추출할 수 없다')
}
})
try catch finally
try {
//예외가 발생할 가능성이 있는 코드
} catch (exception){
//예외가 발생했을 때 실행할 코드
} fianlly{
//무조건 실행할 코드
}
finally 구문은 필요한 경우에만 실행한다
//try catch 구문 사용
try {
willExcept.byeBye()
console.log('try 구문의 마지막 줄 ') //위에서 예외가 발생하므로, 실행되지 않고 catch 구문으로 이동
} catch (exception) {
console.log('catch 구문의 마지막 줄')
}
//finally 구문
try {
willExcept.byeBye()
console.log('try 구문의 마지막 줄')
} catch (exception) {
console.log('catch 구문의 마지막 줄')
} finally {
console.log('finally 구문의 마지막 줄') //예외 발생 여부와 관계 없이 무조건 실행
}
try {} finally {} catch(exception) {}
try catch finally
로 처리할 수 없는 것 error.error.error()
식별자에는 보통 e
나 exception
을 사용한다
속성 이름 | 설명 |
---|---|
name | 예외 이름 |
message | 예외 메시지 |
//예외 정보 출력하기
try {
const array = new Array(99999999999);
} catch (e) {
console.log(e)
console.log()
console.log(`예외 이름 : ${e.name}`)
console.log(`예외 메시지 : ${e.message}`)
}
조금 더 자세하게 예외 발생
throw new Error(문자열)
//throw 활용
function divide(a,b) {
if (b === 0 ){
throw '0으로는 나눌 수 없습니다'
}
return a / b
}
console.log(divide(10,2 ))
console.log(divide(10,0)) //uncaught 0으로는 나눌 수 없습니다
//예외 강제 발생
function test(object) {
console.log(object.a + object.b)
}
test({}) //NaN
1 예외를 강제로 발생시킬 때 사용하는 키워드
throw
2 예외 객체를 e라는 변수로서 추출하는 방법으로 옳은 것
1
3 실행 결과 예측
try 구문입니다
finally 구문입니다