그럼에도 불구하고

👨‍💻

[CleanCode] 에러 다루기 본문

JavaScript/Clean code

[CleanCode] 에러 다루기

zenghyun 2023. 6. 5. 12:25

 

 

[ 유효성 검사 ]

💡 사용자의 입력 값이 유효한지 검증하는 것 

 

💡 유효성 검사는 할 수 있는 모든 곳에서 다 처리하는 게 좋다. 

 

사용자의 입력 => 클라이언트 (HTML, JavaScript) => 백엔드에서 처리

 

사용자와 상호작용 => 사용자의 입력을 받거나 그것을 통해서 무언가 하게 된다.

 

📌 이메일인 경우

- 사용자의 입력이 이메일 포맷에 맞는지 검증한다.

  - 이메일 포맷이 맞는 경우 **그때서야 서버와 통신을 한다.**

 

※ 어떻게 할까? 

-  정규식

-  JavaScript 문법 (문자열 검사)

-  표준 API (Browser API)

 

 

[ try - catch ]

 

try-catch를 사용할 때 가장 많이 실수하는 경우 중 하나가 예상하지 못한 에러가 발생할 수 있는 부분을 try {} 안에 넣지 않는 것입니다. 

 

이럴 경우를 방지하기 위해 try-catch를 사용할 때는 모든 구문을 try에 넣는 것을 추천드립니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/**
 * try-catch 
 * ? 예외를 처리한다 ?
 * 프론트엔드 (클라이언트)
 * 사용자의 입력을 받는다.
 * 
 * 개발자 혹은 프로그래머가 모든 에러를 예측하여 처리하기가 어렵고 거의 불가능하다.
*/
 
function handleSubmit() {
    // 중요하지 않다고 생각하는 핸들링 코드 <= 내 생각과 오류 발생을 초래할 수 있음 
    try {
       //  예외가 예상되는 코드 혹은 발생시킬 코드 
    } catch (error) {
       // 예외를 처리하는 코드
 
       /**
        * 1. 개발자를 위한 예외처리 
        * 2. 사용자를 위한 예외처리
        * 3. 사용자에게 사용을 제안
        * 4. 에러 로그
        */
 
       /**
        * 1. 개발자를 위한 예외처리 => 동료 개발자에게 제안을 ~~ TDZ or 나를 위해
        */
       console.warn(error);
       console.error(error);
 
       /**
        * 2. 사용자를 위한 예외처리 => ( 사용자가 볼 수 있다고 생각 )
        */
       alert(error) // < = 이렇게 하면 안됨 
       alert('404''not found'// < = 이렇게 하면 안됨 
       alert('잠시만 기다려주세요. 어떤 문제가 있습니다. 다시 시도해주세요'// 좋은 예시
 
       /**
        * 3. 사용자에게 사용을 제안
        */
        history.back(); 
        history.go('안전한 어딘가');
        clear();
        element.focus() // 어딘가로 이동을 시켜서 다시 한번 사용자에게 알려주기
 
        /**
         * 4. 에러 로그 수집 
         */
        sentry.전송() // 에러 발생시 수집해주는 기능 
 
        // 5. 비추천하지만 필요에 따라 다시 호출하는 경우 
        재귀호출()
 
    } finally {
        // 데이터 분석을 위한 로그 
    }
 
}
 
// ⭐️ try-catch를 사용할 때는 모든 구문을 try에 넣자 ⭐️
 
cs

 

[ 사용자에게 알려주기 ]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
 * 사용자에게 알려주기
 * - 동료 개발자
 * - 내가 만든 앱을 이용하는 사용자
 *   ㄴ 내가 만든 라이브러리 => ex) React
 *   ㄴ 내가 만든 실제 앱 => ex) 간단한 애플리케이션, 계산기 
 */
 
 
function React() {
    // 생성자로 사용하길 바랄 때...!
 
    if(!new.target) {
        throw new ReferenceError('생성자입니다!!');
    }
}
 
 
React();
 
cs

 

 

'JavaScript > Clean code' 카테고리의 다른 글

[CleanCode] 추상화하기  (0) 2023.06.05
[CleanCode] 함수 다루기  (1) 2023.06.04
[CleanCode] 객체 다루기  (0) 2023.06.02
[CleanCode] 배열 다루기  (0) 2023.06.01
[CleanCode] 분기다루기  (0) 2023.05.30
Comments