Computer Science, asked by Abubakar1797, 1 year ago

How to throw a C++ exception?

Answers

Answered by raushanraj3003
0

C++ exception handling is built upon three keywords:- try, catch, and throw. throw − A program throws an exception when a problem shows up.  This is done using a throw keyword. Catch − A program catches an exception with an exception handler at the place in a program where you want to handle the problem.

Answered by saranyaammu3
0

Answer:

try: represents a block of code that can throw an exception. catch: represents a block of code that is executed when a particular exception is thrown. throw: Used to throw an exception. Also used to list the exceptions that a function throws, but doesn't handle itself.

Explanation:

#include <iostream>

#include <string>

using namespace std;

class MyException : public exception

{

public:

   MyException(const string& msg) : m_msg(msg)

   {

       cout << "MyException::MyException - set m_msg to:" << m_msg << endl;

   }

  ~MyException()

  {

       cout << "MyException::~MyException" << endl;

  }

  virtual const char* what() const throw ()  

  {

       cout << "MyException - what" << endl;

       return m_msg.c_str();

  }

  const string m_msg;

};

void throwDerivedException()

{

   cout << "throwDerivedException - thrown a derived exception" << endl;

   string execptionMessage("MyException thrown");

   throw (MyException(execptionMessage));

}

void illustrateDerivedExceptionCatch()

{

   cout << "illustrateDerivedExceptionsCatch - start" << endl;

   try  

   {

       throwDerivedException();

   }

   catch (const exception& e)

   {

       cout << "illustrateDerivedExceptionsCatch - caught an std::exception, e.what:" << e.what() << endl;

       // some additional code due to the fact that std::exception was thrown...

   }

   catch(const MyException& e)

   {

       cout << "illustrateDerivedExceptionsCatch - caught an MyException, e.what::" << e.what() << endl;

       // some additional code due to the fact that MyException was thrown...

   }

   cout << "illustrateDerivedExceptionsCatch - end" << endl;

}

int main(int argc, char** argv)

{

   cout << "main - start" << endl;

   illustrateDerivedExceptionCatch();

   cout << "main - end" << endl;

   return 0;

}

Similar questions