A Developing Developer

08-2. 예외 처리 고급 본문

내일배움캠프 4기/[Javascript]혼자 공부하는 자바스크립트

08-2. 예외 처리 고급

H-JJOO 2022. 11. 13. 21:20

  • 예외 객체 : 예외와 관련된 정보를 담은 객체

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

 

- 예외 정보 출력하기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>예외 정보 출력하기</title>
    <script>
        try {
            const array = new Array(999999999999) // 배열 크기 초과
        } catch (e) {
            console.log(e)
            console.log()
            console.log(`예외 이름 : ${e.name}`)
            console.log(`예외 메세지 : ${e.message}`)
        }
    </script>
</head>
<body>

</body>
</html>

  • throw 구문 : 예외를 강제로 발생시킬 때 사용하는 구문

단순하게 예외를 발생시킨다 -> throw 문자열

조금 더 자세하게 예외를 발생 시킨다 -> throw new Error(문자열)

 

- 예외 강제로 발생시키고 잡기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>예외 강제로 발생시키고 잡기</title>
    <script>
        function divide(a,b) {
            if (b === 0) {
                throw '0 으로는 나눌 수 없습니다.'
            }
            return a / b
        }

        console.log(divide(10, 2))
        console.log(divide(10, 0))
    </script>
</head>
<body>

</body>
</html>

- 예외 강제로 발생시키기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>예외 강제로 발생시키기</title>
    <script>
        function test(object) {
            console.log(object.a + object.b)
        }

        test({})

        // 일반적인 프로그래밍 언어
        // object 객체에 a, b 속성이 없으므로 예외 발생
        // 존재하지 않는 object.a + object.b 도 예외 발생

        // 자바스크립트
        // object.a, object.b 둘다 undefined 로 나온다.
        // undefined + undefined 는 NaN 이 나온다.
        // 오류 없음
    </script>
</head>
<body>

</body>
</html>

- 예외 강제로 발생시켜서 사용 유도하기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>예외 강제로 발생시켜서 사용 유도하기</title>
    <script>
        function test(object) {
            if (object.a !== undefined && object.b !== undefined) {
                console.log(object.a + object.b)
            } else {
                throw new Error("a 속성과 b 속성을 지정하지 않았습니다.")
            }
        }

        test({})
    </script>
</head>
<body>

</body>
</html>

============================================================================================

출처 : 혼자 공부하는 자바스크립트

============================================================================================

다음다음