Home > Backend Development > C++ > body text

C++ program creates custom exception

WBOY
Release: 2023-08-26 19:53:05
forward
979 people have browsed it

C++ program creates custom exception

Exception is a very core concept of C. Exceptions occur when an undesired or impossible operation occurs during execution. Handling these unwanted or impossible operations in C is called exception handling. Exception handling mainly uses three specific keywords, which are ‘try’, ‘catch’ and ‘throw’. The ‘try’ keyword is used to execute code that may encounter exceptions, the ‘catch’ keyword is used to handle these exceptions, and the ‘throws’ keyword is used to create exceptions. Exceptions in C can be divided into two types, namely STL exceptions and user-defined exceptions. In this article, we focus on how to create these custom exceptions. More details on exception handling can be found here.

Creating custom exceptions using a single class

First, we saw how to create custom exceptions using a single class. To do this we have to define a class and throw an exception from that class.

grammar

//user-defined class
class Test{};
try{
   //throw object of that class
   throw Test();
}
catch(Test t) {
   ....
}
Copy after login

Example

is translated as:

Example

#include <iostream>
using namespace std;

//define a class
class Test{};

int main() {
   try{
      //throw object of that class
      throw Test();
   }
   catch(Test t) {
      cout << "Caught exception 'Test'!" << endl;
   }

   return 0;
}
Copy after login

Output

Caught exception 'Test'!
Copy after login

The 'try' block will throw exceptions of that class, while the 'catch' block will only catch exceptions of that specific class. If there are two user-defined exception classes, they must be handled separately.

Create custom exceptions using multiple classes

The process is simple, as expected, if there are multiple exceptions, each must be handled individually.

grammar

//user-defined class
class Test1{};
class Test2{};
try{
   //throw object of the first class
   throw Test1();
}
catch(Test1 t){
   ....
}
try{
   //throw object of the second class
   throw Test2();
}
catch(Test2 t){
   ....
}
Copy after login

Example

is translated as:

Example

#include <iostream>
using namespace std;

//define multiple classes
class Test1{};
class Test2{};

int main() {
   try{
      //throw objects of multiple classes
      throw Test1();
   }
   catch(Test1 t) {
      cout << "Caught exception 'Test1'!" << endl;
   }
   try{
      throw Test2();
   }
   catch(Test2 t) {
      cout << "Caught exception 'Test2'!" << endl;
   }

   return 0;
}
Copy after login

Output

Caught exception 'Test1'!
Caught exception 'Test2'!
Copy after login

We had to use two different try-catch blocks to handle two different categories of exceptions. Now let's see if we can create and handle exceptions using constructors.

Use the constructor to create a custom exception

We can use the class constructor to create custom exceptions. In the example below, we can see that exception throwing and handling are managed inside the class constructor.

Example

is translated as:

Example

#include <iostream>
using namespace std;

//define a class
class Test1{
   string str;
   public:
      //try-catch in the constructor
      Test1(string str){
         try{
            if (str == "Hello"){
               throw "Exception! String cannot be 'Hello'!";
            }
            this->str = str;   
         }
         catch(const char* s) {
            cout << s << endl;
         }
      }
};

int main() {
   Test1 t("Hello");
   return 0;
}
Copy after login

Output

Exception! String cannot be 'Hello'!
Copy after login

Exception handling is one of the most important functions provided by C. We can inherit the C exception class and use it to implement exception handling, but this is just good practice and not required to create custom exceptions. The benefit of inheriting the C exception class is that if there is a normal catch statement catching std::exception, it can handle any user-defined exception without needing to know the specific details. It should be noted that the 'throws' statement only works within the 'try' block, otherwise it will not work. The 'catch' statement can only handle exceptions thrown by user-defined classes or certain STL classes.

The above is the detailed content of C++ program creates custom exception. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:tutorialspoint.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!