Catching Base And Derived Classes As Exceptions In C++ And Java - C++ Programming Tutorial
C++ Course / Exception Handling / Catching Base And Derived Classes As Exceptions In C++ And Java

Catching Base And Derived Classes As Exceptions In C++ And Java

BLUF: Mastering Catching Base And Derived Classes As Exceptions In C++ And Java is a critical step in becoming a proficient C++ developer. This lesson provides a deep dive into the syntax, performance considerations, and real-world applications of this concept.
Key Performance Insight: Catching Base And Derived Classes As Exceptions In C++ And Java

C++ is renowned for its efficiency. Learn how Catching Base And Derived Classes As Exceptions In C++ And Java enables low-level control and high-performance computing in the tutorial below.

Before delving into the main subject of capturing Base and Derived Classes as Exceptions in C++ and Java, it is essential to grasp the concept of exceptions and how they are managed. Exceptions represent errors that arise during programming and are typically considered as undesired outcomes or anomalies. They act as obstacles encountered during the coding process, while exception handling serves as the mechanism to address and manage these errors or constraints effectively.

When dealing with exception handling in both C++ and Java programming languages, there are several approaches to consider, especially when catching exceptions from both base and derived classes.

  • When an exception is thrown and caught, it's crucial to note that if both the base and derived classes are involved, the catch block for the derived class should precede the catch block for the base class in order to ensure that the appropriate exception handling logic is applied correctly.
  • This ordering is significant because if the catch block for the base class is positioned before the catch block for the derived class, the exception thrown by the derived class will never be reached or handled, potentially leading to unexpected behavior in the program execution.
  • Algorithm (Catching Base and Derived Classes as Exceptions in C++ and Java)

Example:

Example

begin //code starts from here
   declare a class b.
   say another class d which inherits class b.
   now display an object of class d.
   Try: throw derived.
   Catch (d derived)
      Print "code has been caught in the derived exception".
   Catch (B b)
      Print "code has been caught in the base exception".
End

C++ Code

Example

//here, we are writing down the C++ programming language code to
//demonstrate the concept of Catching Base and 
//Derived Classes as Exceptions in both C++ and Java languages
#include <iostream>
using namespace std;
class base_ {
};
class derived_: public base_ {
};
int main()
{
	derived_ d;
	//these are some necessary functionalities we may use
	try {
		//this is the monitored code we use
		throw d;
	}
	catch (base_ b) {
		cout << "OH! Caught Based Exception occured";
	}
	catch (derived_ d) {
		//note: the catch block we wrote below will never get executed!
		cout << "oh! caught in the derived exception...";
	}
	getchar();
	return 0;
}

Output:

Output

prog.cpp: In function 'int main()':
prog.cpp:20:5: warning: exception of type 'derived_' will be caught
    catch (derived_ d) {
    ^
prog.cpp:17:5: warning:    by the earlier handler for 'base_.'
    catch (base_ b) {
/ tm  p /vLt kM  pH G zo.o
OH! Caught Based Exception occurred

C++ code

Example

//here, we are writing down the C++ programming language code to
//demonstrate the concept of Catching Base and 
//Derived Classes as Exceptions in both C++ and Java languages
#include <iostream>
using namespace std;

class base_ {};
class derived : public base_ {};
int main()
{
	derived d;
    //these are some necessary functionalities we may use
	try {
	
		//this is the monitored code we use
		throw d;
	}
	catch (derived d) {
		cout << "the code has been caught in the derived exception";
	}
	catch (base_ b) {
		cout << "the code has been caught in the base exception";
	}
	//this below code snippet is to read out the next possible character
	getchar(); 
	return 0;
}

Output:

Output

/tmp /vL tk MpH  Gzo.o
the code has been caught in the derived exception

Java Code

Example

//here, we are writing down the Java programming language code to
//demonstrate the concept of Catching Base and 
//Derived Classes as Exceptions in both C++ and Java languages
class base_ extends Exception {
}
class derived_ extends base_ {
}
public class Main{
	public static void main(String args[])
	{
		try {
			throw new derived_();
		}
		catch (base_ b) {
		}
		catch (derived_ d) {
		}
	}
}

Output:

Output

/tmp /vL tk MpH  Gzo.o
./Main.java:13: error: exception Derived has already been caught
		catch (Derived d) {
		^
1 error

Java Code

Example

//here, we are writing down the Java programming language code to
//demonstrate the concept of Catching Base and 
//Derived Classes as Exceptions in both C++ and Java languages
class base_b extends Exception {}
class derived_d extends base_b {}
public class Main {
public static void main(String args[]) {
// below, we wrote the try block code snippet
try {
    //this is the monitored code we use
	throw new derived_d();
	}
	catch(base_b)	 {
	System.out.println("the code has been caught in the base exception");
	}
	catch(derived_d) {
	System.out.println("the code has been caught in the derived exception");
	}
}
}

Output:

Output

Main.java:12: error: exception Derived has already been caught
    catch(derived_d)  { System.out.println("the code has been caught in the derived exception");}

Input Required

This code uses input(). Please provide values below:

Logic Practice
Install Logic Practice
Add to home screen for a faster app-like experience