일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 고수준
- 1일 1커밋
- 함수의 범위
- 런타임 복잡도
- C# Assert
- 언매니지드
- COMP2500
- 매니지드
- SWAGGER
- out 매개변수
- do-while
- 선조건
- args
- 후조건
- 데이터타입 #변수
- 배열의 배열
- msa
- 접두사
- Github
- 공학수학
- 개체지향
- 논리 연산자
- 다차원 배열
- 접미사
- comp1000
- 포큐
- 저수준
- 오픈쉬프트
- jit
- decimal
- Today
- Total
내 생각대로 정리하는 블로그
Exception 예외처리 본문
특정 오류로 인해 시스템이 멈추는 경우가 생긴다. 이러한 점을 미리 파악하여 예외처리를 한다. 예외처리, 말 그대로 예외적으로 처리하는 방법이다. 쉽게 생각하면 무시한다. 라고 생각하는게 쉬울것 같다. 파일을 예를 들어 설명하면, 나는 A라는 폴더에 A라는 파일을 만들어라 그리고 A라는 문자를 입력해라 라고 코딩을 했다. 그런데 A라는 폴더가 존재하지 않고 B라는 폴더가 있었다 라고 가정하면, 보통 어플리케이션은 A라는 폴더를 찾았지만 존재하지 않는다며 오류를 뱉어내고 어플리케이션을 종료시켜버린다. 이렇게 되면 잘 사용하던 시스템이 그 뒤로는 사용할 수 없게된다. 이러한 점으로 예외처리를 많이 사용한다.
try {
// logic
} catch ( Exception e) {
// 오류 문구
} finally {
// 무조건
}
try catch를 사용한다. logic부분에 내가 원하는 코드를 넣어 작동시켰을때 오류가 나면 catch 하여 // 오류문구 쪽으로 유도해서 원하는 문구라던지, 특정 작동을 시킬 수 있게 된다.
try catch와 함께쓰는 finally!
fianlly는 무조건 작동하는 코드이다. 오류 없이 //logic영역이 끝나도 finally 작동 오류가 발생해도 finally의 //무조건 영역을 실행하게 된다.
*이렇게만 보았을때 정말 좋아보인다. 완전 필수로 사용해야 할듯하다.
그러나 try catch를 난발하게 되면 중요한 오류를 잡아 수정할 수 없다 라는 단점이 생긴다. 모든 예외 사항을 무시해버리게 되면 크리티컬한 오류를 그냥 무시하는 꼴이 되니 말이다.
그렇기에 업계에서는 두개의 파로 나뉜다고 한다.
- 예외처리를 써도 된다.
- 예외처리를 되도록이면 쓰지말아야한다.
이건 dto를 써야한다. 그냥 map을 써도 된다. 의 논쟁이랄까?
그래서 내가 공부하고 있는 선생님께서는 경계에서만 쓰는것으로 정의해주셨다.
경계란? 예를들어 java단에서 db를 조회할때. 이런 경계에서만 사용하고,
로직적인 부분에서는 모든 내용을 컨트롤 해서 오류를 수정하는 방향으로 가는것이 안정화에 좋다라고 하셨다.
충분히 공감된다.
단순히 오류방지용으로 사용하는 try catch인줄 알았는데,
이런 논쟁도 있다라고 알게되니 역사공부하는 느낌이 든다.
'IT공부 > 프로그래밍' 카테고리의 다른 글
[포큐]COMP1000(공학수학) + COMP2500(개체지향) 재직자 강좌 후기 (1) | 2021.12.13 |
---|---|
직렬화 / 역직렬화 (0) | 2021.08.26 |
클래스( class ) (0) | 2021.08.11 |
오버로딩 (0) | 2021.08.04 |
재귀 함수( recursive function ) (0) | 2021.07.30 |