Cpp - 예외처리(Exception Handling), try, throw, catch

eelijus·2022년 5월 14일
0

Cpp/C++

목록 보기
6/10

💡 예외처리 (Exception Handling), try, throw, catch

C 언어로 코딩을 할 때는 if문으로 예외를 처리했다. C++에서는 예외처리를 위해서 try, throw, catch키워드를 이용한다. 예외처리를 위한 코드와, 프로그램의 논리를 위한 코드를 구분하기 위해서임.

try

: try 내부에서 예외가 있는지 탐색하는 부분

throw

: try에서 예외를 탐색하면, throw의 인자로 준 변수를 catch로 넘김

catch

: throw에서 던진 변수를 인자로 받아서 catch 내부의 예외처리를 실시

  • 예시 코드
#include <iostream>

int main() {
	try {
		int level;

		std::cin >> level;
        
        if (level < 3)
        	throw(level);
        //아래 코드는 throw호출 시 실행되지 않는다.    
        std::cout << "you can enter" << std::endl;
		std::cout << "input level : " << level << std::endl;
	}
	catch (int level) {
		std::cout << "you cannot enter" << std::endl;
		std::cout << "your level : " << level << std::endl;
	}
}
//OUTPUT

//input == 3
3
you can enter
input level : 3

  
//input == 1  
1
you cannot enter
your level : 1
sujilee@Sujis-MacBookPro:~/Desktop/cpp test(master⚡) » 
  • 다른 예시 코드

swap 함수에서 인자로 들어오는 두 값이 같을 경우의 예외처리를 하고 싶다!

#include <iostream>

void swap(int &a, int &b) {
	int temp;

	if (a == b) 
		throw a;
	temp = a;
	a = b;
	b = temp;
}

int		main() {
	int num1;
	int num2;

	try {
		std::cin >> num1;
		std::cin >> num2;
		std::cout << "num1 : " << num1 << std::endl;
		std::cout << "num2 : " << num2 << std::endl;
		std::cout << "------------" << std::endl;
		swap(num1, num2);

		std::cout << "swap complete" << std::endl;
		std::cout << "num1 : " << num1 << std::endl;
		std::cout << "num2 : " << num2 << std::endl;

		std::cout << std::endl;
	}
	catch (int sameNum) {
		std::cout << "you don't have to swap this" << std::endl;
	}
	std::cout << "EXIT" << std::endl;

	return (0);
}
profile
sujileelea

0개의 댓글