C++에서 범위를 벗어난 예외 발생
C++에서는 try-catch
블록을 사용하여 예외를 처리할 수 있습니다. throw
문을 사용하여 명시적으로 예외를 throw할 수도 있습니다.
이 문서에서는 C++에서 범위를 벗어난 예외를 throw하는 방법에 대해 설명합니다.
C++에서 범위를 벗어난 예외 발생
C++에서 범위를 벗어난 예외를 발생시키려면 예외 개체를 만들 수 있습니다. 이를 위해 out_of_range()
생성자를 사용할 수 있습니다.
out_of_range()
생성자는 표준 C++ 라이브러리에 정의되어 있습니다. 문자열 객체를 입력 인수로 사용하고 범위를 벗어난 예외를 반환합니다.
다음 예제와 같이 throw
문을 사용하여 예외를 throw할 수 있습니다.
#include <iostream>
int main() {
int number = 100;
if (number > 50) {
throw std::out_of_range("I am an exception.");
}
return 0;
}
출력:
terminate called after throwing an instance of 'std::out_of_range'
what(): I am an exception.
Aborted
여기에서 먼저 숫자
라는 변수를 만들었습니다. 그런 다음 숫자
의 값이 50
보다 큰지 확인했습니다.
그렇다면 표준 C++ 라이브러리에 정의된 범위를 벗어난 예외가 발생한 것입니다.
try-catch
블록을 사용하여 범위를 벗어난 예외를 처리할 수도 있습니다. try
블록에서 예외를 발생시킵니다.
범위를 벗어난 예외를 포착하고 catch
블록에서 예외를 처리했음을 인쇄합니다. 다음 예제에서 이를 관찰할 수 있습니다.
#include <iostream>
int main() {
int number = 100;
try {
if (number > 50) {
throw std::out_of_range("I am an exception.");
}
} catch (std::out_of_range) {
std::cout << "I am here. Exception caught and handled.";
}
return 0;
}
출력:
I am here. Exception caught and handled.
위의 출력은 범위를 벗어난 예외를 처리한 후 프로그램이 정상적으로 종료되었음을 보여줍니다. 반면 이전 프로그램은 예외를 처리하지 않았기 때문에 중단되었습니다.
C++에서 범위를 벗어난 예외를 던지는 동안 오류가 발생했습니다.
아래와 같이 C++에서 범위를 벗어난 예외를 발생시키는 프로그램을 작성하는 것이 때때로 가능합니다.
#include <iostream>
int main() {
int number = 100;
try {
if (number > 50) {
throw std::out_of_range;
}
} catch (std::out_of_range) {
std::cout << "I am here. Exception caught and handled.";
}
return 0;
}
위의 코드를 실행하면 프로그램은 다음 실행 추적과 함께 오류로 실행됩니다.
/tmp/EG06BKsTcd.cpp: In function 'int main()':
/tmp/EG06BKsTcd.cpp:8:36: error: expected primary-expression before ';' token
8 | throw std::out_of_range;
| ^
범위를 벗어난 예외 개체 대신 std::out_of_range
를 throw했기 때문에 오류가 발생합니다. std::out_of_range
생성자는 범위를 벗어난 예외를 생성하는 데 사용되는 유형 정의입니다.
따라서 throw
문을 사용하여 던질 수 없습니다. C++에서 범위를 벗어난 예외를 발생시키려면 std::out_of_range()
생성자에 문자열을 입력 인수로 전달하여 범위를 벗어난 예외를 생성해야 합니다. 그래야만 C++에서 범위를 벗어난 예외를 성공적으로 throw할 수 있습니다.
Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.
GitHub