일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- C++
- rendering pipeline
- 백준
- Overloading
- 논문
- sparse matrix
- 독서
- Algorithm
- 참조자
- UNORDERED_MAP
- game jam
- class
- 프로그래머스
- Conjugate Gradient
- numerical method
- Til
- oprerator
- ComputeShader
- Implicit method
- 알고리즘
- C
- 2020.02.23
- TIP
- stretch force
- 알고리즘연습
- ppt
- algorithm #알고리즘 #백준
- 학습용
- graphics
- 2020.03.16
Archives
- Today
- Total
OSgood의 개발일기
c++예외처리(Exception Handling) 본문
- 예외 상황이란?
문법적 오류가 아닌 내가 구현한 프로그램의 흐름상 맞지 않는(나에게 반갑지 않은) 상황을 이야기한다.
- 왜 필요할까?
나 또한 그랬고 많은 개발자들이 예외를 그냥 IF문만을 가지고 처리한다. 하지만 이 때 문제는 코드와 주석만을 가지고 예외처리를 위한 코드 부분이라는 것을 이해하여야 하기 때문에 가독성이 심하게 떨어지게 된다.
- 어떻게?
1.try
-> 예외가 발생할 것 같은 부분! 이 때, 주의할 것은 발생할 것 같은 부분의 줄만 딱 try처리를 하는 것이 아니라 발생할 것 같은 부분의 work단위로 묶어야 한다는 것이다. 아래 예시의 주석을 통해 간단히 설명하겠지만 왜 work단위로 try를 묶으면 안되는지는 궁금하다면 좀 더 찾아보면서 공부하는 것을 추천한다.(왜냐하면 work 단위로 묶지 않으면 상당히 치명적이기 때문이다.)
2.throw
-> 발생한 예외 데이터가 무엇인지 던져준다.
3.catch
-> 발생한 예외 데이터를 잡는다.
- 예시(ex)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | void 나누기(int a,int b) { if(b == 0) thorw b;//이 부분을 통해 발생한 예외를 던져준다. cout<<"답은:"<< a/b<<endl; } void main() { int a,b; cout<<"나눠질 숫자와 나눌 숫자를 입력하세요." cin>>a>>b; try { 나누기(a,b);// try부분을 다음과 같이 work부분으로 묶어야한다. 만약 위에서 if(b==0)부분만을 try 처리하면 안 된다는 의미이다. } catch(int expn)//thow에서 던져준 값이 expn에 들어가게 된다. { cout<<"나누는 수는 "<<expn<<"이 될 수 없습니다!!"<<endl; } } | cs |
'C++ > 문법' 카테고리의 다른 글
Constructor & Destructor (0) | 2019.03.08 |
---|---|
Call-By-Reference-참조자 (0) | 2019.03.03 |
메모리 공간 (0) | 2019.03.03 |
얕은 복사(shallow copy)의 문제점 (0) | 2018.11.09 |
[class] C++ Inheritance(상속) (0) | 2018.11.05 |
Comments