본문 바로가기
개발/JavaScript

2023.04.12 JavaScript의 map,예외처리

by 상달군 2023. 4. 12.
728x90

목차

1. JavaScript의 맵(map)

2. JavaScript의  예외처리

 


1. JavaScript의 맵(map)

 - Key,Value로 이루어진 데이터 집합의 자료구조

    형태

        const 맵이름 = new Map([['키1', '값1'],['키2', '값2'],....]);

const 맵이름 = new Map([['키1', '값1'],['키2', '값2'],....]);
    <script>
        const map = new Map([
            ['apple', '🍎'],
            ['banana', '🍌']
        ]);

        console.log(map);
        console.log('-----------');

        // 사이즈 확인
        console.log(map.size);
        console.log('-----------');
        // 키 존재 확인
        console.log(map.has('apple'));
        console.log(map.has('banana'));
        console.log(map.has('orange'));
        console.log('-----------');

        // 순회(반복)
        map.forEach((value, key) => console.log(key, value));
        console.log('-----------');

        // 데이터 찾기
        console.log(map.get('apple'));
        console.log(map.get('banana'));
        console.log(map.get('orange')); // 키값이 존재 하지 않기때문에 undefined
        console.log('-----------');

        obj = {'apple': '🍎','banana':'🍌'}
        //console.log(obj.get('apple'));// get함수가 없어서 할수 없음
        console.log('obj : ' + obj['apple']);
        console.log('obj : ' + obj.apple);
        console.log('map : ' + map['apple']);  // undefined(값을 찾을수 없다. )
        console.log('map : ' + map.get('apple')); // map에서 값을 찾을수 있는 방법이 get을 이용하는것 !
        console.log('map : ' + map.apple);// undefined(값을 찾을수 없다. )
        console.log('-----------');

        // 값을 추가 
        map.set('orange','🍊');
        console.log(map);
        console.log('-----------');

        // 값을 삭제
        map.delete('orange');
        console.log(map);
        console.log('-----------');

        // 전부 삭제 
        map.clear();
        console.log(map);

    </script>


✔ 팁!! 주석(comments)

    // : 한줄짜리 주석
    /* ..... */ :  여러줄 주석
    /** */ : JSDoc 주석 (추천하는 주석문)
        예) /**
             *ㅁㄴㅇㄹㅇㅁㄴ
             *ㅁㄴㅇㄹㄴㅇㅁ
             *ㅁㅇㄴㄻㄴㅇ
            */


2. JavaScript의  예외처리

 - 문법

    try {
        예외가 발생할 것으로 예상되는 문장;
        ...
        ...
    }catch(error 객체){
        예외가 발생했을 때 처리할 문장;
        ...
        ...
    }finally{
        예외와 관계없이 무조건 실행할 문장;
        ...
    }

 

예외처리1 예시)

    <h2>예외처리1</h2>
    <script>

        //JSDoc 예시
        /**
         * JSDOC 사용법
         * 주어진 매개변수 경로에 의한 파일을 만들고 반환함
         * @param {*} path 문자
         * @returns 파일객체
         */

        function readFile(path){
            throw new Error('파일 경로를 찾을 수 없음!'); //에러를 일부로 발생시키기 throw
            return '파일경로를 참조하여 파일을 생성함';
        }

        function processFile(path){
            let content;
            try{
                content = readFile(path);
            }catch(error){
                console.log(error);
                content = '기본내용';
            }finally{
                console.log('에러의 발생 여부와 관계없이 실행할 문장을 작성했음!');
            }
            const result = '결과: '+ content;
            return result;
        }

        const result = processFile('경로');
        console.log(result);
    </script>


예외처리2 예시)

    <script>
        function func1(){
            console.log('func1이 호출되었어요!');
            throw new Error('에러발생!!'); // 억지로 에러발생!

        }

        function func2(){
            try{// 이렇게 예외 처리를 해놓지 않으면 func1에러 에서 비정상 프로그램 종료가 될것이다 !
                func1();
            }catch(error){
                console.log('예외처리 완료!');
                throw error; // 억지로 에러발생!
            }
        }
        function func3(){
            try{
                func2();
            }catch(error){
                console.log('여기에서 예외처리 또 완료!');
            }
        }

        func3();
        console.log('프로그램이 정상적으로 종료되었습니다. ');

        // 함수는 스택방식과 비슷하다.
        // func3함수-> func2함수-> func1함수 이렇게 되면 스택처럼 쌓이게 된다.
        // 반환 해서 돌아올때는 func1함수-> func2함수-> func3함수 이런식으로 나온다.

728x90

댓글