How to Throw and Catch Exceptions in C++?
Last Updated :
03 Apr, 2024
In C++, exception handling is a mechanism that allows us to handle runtime errors and exceptions are unusual conditions that occur at runtime. In this article, we will learn how to throw and catch exceptions in C++.
Throw and Catch Exceptions in C++
In C++ exceptions can be “thrown” when an error occurs and can be “caught” and “handled” to ensure the program’s flow remains uninterrupted.
Throwing Exceptions in C++
We can use the throw keyword to throw an exception followed by an exception object from inside a try block. As soon as a program encounters a throw statement it immediately terminates the current function and starts finding a matching catch
block to handle the thrown exception.
Catching Exceptions in C++
To catch an exception, we can use the catch
keyword. The catch
block follows the try
block and is used to handle any exceptions that are thrown within the try
block.
Syntax to Throw and Catch Exceptions in C++
try {
// Code that might throw an exception
throw exception_object;
}
catch (exception_type e) {
//catch the exception thrown from try block and handle it
}
Here, exception_object
is an instance of an exception class, and exception_type
is the type of exception that the catch
block can handle.
C++ Program to Throw and Catch Exception
The following program illustrates how we can throw and catch an exception in C++.
C++
// C++ Program to illustrates how we can throw and catch an
// exception
#include <iostream>
#include <stdexcept>
using namespace std;
// Function to perform division of two numbers
void divide(int num1, int num2)
{
if (num2 == 0) {
// Throw a runtime_error exception if the
// denominator is zero
throw runtime_error("Division by zero error");
}
cout << "Result of division: " << num1 / num2 << endl;
}
int main()
{
// Declare two numbers
int num1 = 5;
int num2 = 0;
try {
// Perform Division
divide(num1, num2);
}
catch (const exception& e) {
// Catch the exception and print the error message
cerr << "Caught exception: " << e.what() << endl;
}
return 0;
}
Output
Caught exception: Division by zero error
Time Complexity: O(1)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...