[혼공js] 8. 예외 처리

승연·2024년 2월 16일
0
post-thumbnail

8.1. 구문 오류와 예외

구문 오류예외
괄호 개수를 잘못 입력하는 등의 오류로 코드가 실행조차 안되는 것코드 실행 중간에 발생하는 오류

8.1.1. 오류의 종류

구문 오류

//구문 오류 예제

//프로그램 시작 확인   
console.log('#프로그램이 시작되었습니다!')

//구문 오류가 발생하는 부분
console.log('괄호를 닫지 않는 실수를 하다'

⇒ syntax error

예외 / 런타임 에러

//예외/런타임 에러 예제 

//프로그램 시작 확인
console.log('#프로그램이 시작되었습니다')

//구문 오류 발생하는 부분
console.rog('log를 rog로 입력 ')

⇒ 일단 코드 자체는 실행이 됨, console.rog는 함수가 아니라고 함

8.1.2. 기본 예외 처리

기본 예외 처리 : 조건문을 사용해서 예외가 발생하지 않게 하는 것

<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 태그를 추출할 수 없다')
    }
})

8.1.3. 고급 예외 처리

try catch finally

try {
//예외가 발생할 가능성이 있는 코드
} catch (exception){
//예외가 발생했을 때 실행할 코드
} fianlly{
//무조건 실행할 코드
}

finally 구문은 필요한 경우에만 실행한다

try catch 구문

//try catch 구문 사용

try {
    willExcept.byeBye()
    console.log('try 구문의 마지막 줄 ')    //위에서 예외가 발생하므로, 실행되지 않고 catch 구문으로 이동 
} catch (exception) {
    console.log('catch 구문의 마지막 줄')
}

finally 구문

//finally 구문

try {
    willExcept.byeBye()
    console.log('try 구문의 마지막 줄')
} catch (exception) {
    console.log('catch 구문의 마지막 줄')
} finally {
    console.log('finally 구문의 마지막 줄') //예외 발생 여부와 관계 없이 무조건 실행 
}

8.1.4. 확인 문제

  • 1 구문 오류 (프로그램 실행 전에 발생하는 오류) 1, 2, 3
  • 2 예외처리 구문의 조합 옳지 않은 것 try {} finally {} catch(exception) {}
  • 3 try catch finally로 처리할 수 없는 것 error.error.error()

8.2. 예외 처리 고급

8.2.1. 예외 객체

💫 try { } catch (**exception**) { }

식별자에는 보통 eexception을 사용한다

속성 이름설명
name예외 이름
message예외 메시지

예외 정보 출력하기

//예외 정보 출력하기
try {
    const array = new Array(99999999999);
} catch (e) {
    console.log(e)
    console.log()
    console.log(`예외 이름 : ${e.name}`)
    console.log(`예외 메시지 : ${e.message}`)
}

Untitled

8.2.2. 예외 강제 발생

💫 단순하게 예외 발생 `throw 문자열`

조금 더 자세하게 예외 발생
throw new Error(문자열)

throw

//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

8.2.3. 확인 문제

  • 1 예외를 강제로 발생시킬 때 사용하는 키워드

    throw

  • 2 예외 객체를 e라는 변수로서 추출하는 방법으로 옳은 것

    1

  • 3 실행 결과 예측
    try 구문입니다

    finally 구문입니다

profile
앙녕항셍용

0개의 댓글