Exercise: Questions on Exception Handling


Questions on Exception Handling : Question 1 :
#include <iostream>
using namespace std;
int main()
{
   int x = -1;
   try {
      cout << "Inside try \n";
      if (x < 0)
      {
         throw x;
         cout << "After throw \n";
      }
   }
   catch (int x ) {
      cout << "Exception Caught \n";
   }

   cout << "After catch \n";
   return 0;
}

Inside try
Exception Caught
After throw 
After catch
Inside try
Exception Caught
After catch
Inside try
Exception Caught
Inside try
After throw
After catch
Show Answer
Questions on Exception Handling : Question 2 :
What is the advantage of exception handling?

1) Remove error-handling code from the software's main line of code.

2) A method writer can chose to handle certain exceptions and delegate 
   others to the caller.

3) An exception that occurs in a function can be handled anywhere in
   the function call stack. 

Only 1
1, 2 and 3
1 and 3
1 and 2
Show Answer
Questions on Exception Handling : Question 3 :
What should be put in a try block?

1. Statements that might cause exceptions
2. Statements that should be skipped in case of an exception 

Only 1
Only 2
Both 1 and 2
Show Answer
Questions on Exception Handling : Question 4 :
Output of following program
#include<iostream>
using namespace std;

class Base {};
class Derived: public Base {};
int main()
{
   Derived d;
   try {
       throw d;
   }
   catch(Base b) {
        cout<<"Caught Base Exception";
   }
   catch(Derived d) {
        cout<<"Caught Derived Exception";
   }
   return 0;
}

Caught Derived Exception
Caught Base Exception
Compiler Error
Show Answer
Questions on Exception Handling : Question 5 :
#include <iostream>
using namespace std;

int main()
{
    try
    {
       throw 'a';
    }
    catch (int param)
    {
        cout << "int exception\n";
    }
    catch (...)
    {
        cout << "default exception\n";
    }
    cout << "After Exception";
    return 0;
}

default exception
After Exception
int exception
After Exception
int exception
default exception
Show Answer
Questions on Exception Handling : Question 6 :
#include <iostream>
using namespace std;

int main()
{
    try
    {
       throw 10;
    }
    catch (...)
    {
        cout << "default exception\n";
    }
    catch (int param)
    {
        cout << "int exception\n";
    }

    return 0;
}

default exception
int exception
Compiler Error
Show Answer
Questions on Exception Handling : Question 7 :
#include <iostream>
using namespace std;

int main()
{
    try
    {
        try
        {
            throw 20;
        }
        catch (int n)
        {
            cout << "Inner Catch\n";
            throw;
        }
    }
    catch (int x)
    {
        cout << "Outer Catch\n";
    }
    return 0;
}

Outer Catch
Inner Catch
Inner Catch
Outer Catch
Compiler Error
Show Answer
Questions on Exception Handling : Question 8 :
#include <iostream>
using namespace std;

class Test {
public:
   Test() { cout << "Constructing an object of Test " << endl; }
  ~Test() { cout << "Destructing an object of Test "  << endl; }
};

int main() {
  try {
    Test t1;
    throw 10;
  } catch(int i) {
    cout << "Caught " << i << endl;
  }
}

Caught 10
Constructing an object of Test 
Caught 10
Constructing an object of Test 
Destructing an object of Test 
Caught 10
Compiler Errror
Show Answer
Questions on Exception Handling : Question 9 :
#include <iostream>
using namespace std;

class Test {
  static int count;
  int id;
public:
  Test() {
    count++;
    id = count;
    cout << "Constructing object number " << id << endl;
    if(id == 4)
       throw 4;
  }
  ~Test() { cout << "Destructing object number " << id << endl; }
};

int Test::count = 0;

int main() {
  try {
    Test array[5];
  } catch(int i) {
    cout << "Caught " << i << endl;
  }
}

Constructing object number 1
Constructing object number 2
Constructing object number 3
Constructing object number 4
Destructing object number 1
Destructing object number 2
Destructing object number 3
Destructing object number 4
Caught 4
Constructing object number 1
Constructing object number 2
Constructing object number 3
Constructing object number 4
Destructing object number 3
Destructing object number 2
Destructing object number 1
Caught 4
Constructing object number 1
Constructing object number 2
Constructing object number 3
Constructing object number 4
Destructing object number 4
Destructing object number 3
Destructing object number 2
Destructing object number 1
Caught 4
Constructing object number 1
Constructing object number 2
Constructing object number 3
Constructing object number 4
Destructing object number 1
Destructing object number 2
Destructing object number 3
Caught 4
Show Answer
Questions on Exception Handling : Question 10 :
Which of the following is true about exception handling in C++? 1) There is a standard exception class like Exception class in Java. 2) All exceptions are unchecked in C++, i.e., compiler doesn't check if the exceptions are caught or not. 3) In C++, a function can specify the list of exceptions that it can throw using comma separated list like following.
  void fun(int a, char b) throw (Exception1, Exception2, ..) 

1 and 3
1, 2 and 3
1 and 2
2 and 3
Show Answer