How to Use Multiple Catch Clauses in C#?
Last Updated :
25 Jan, 2025
In C#, the main purpose of a catch block is to handle exceptions raised in the try block. A catch block is executed only when an exception occurs in the program. We can use multiple catch blocks with a single try block to handle different types of exceptions. Each catch block is designed to handle a specific type of exception.
Note: C# does not allow multiple catch blocks for the same exception type, because it will cause a compile-time error. The catch blocks are evaluated in the order they appear. If an exception matches the first catch block, the remaining catch blocks are ignored.
Syntax of try-catch with Multiple Catch Clauses:
try
{ // Code that may throw an exception }
catch (ExceptionType1 ex)
{ // Handle ExceptionType1 }
catch (ExceptionType2 ex)
{ // Handle ExceptionType2 }
// Add more catch blocks as needed
finally
{ // Code that executes regardless of exceptions (optional) }
Example 1: Handling DivideByZeroException and IndexOutOfRangeException
In this example, the try block generates two types of exceptions:
- DivideByZeroException: When trying to divide a number by zero.
- IndexOutOfRangeException: When accessing an array with an invalid index.
Each exception is handled by a specific catch block.
C#
// C# program to illustrate multiple catch blocks
using System;
class Geeks
{
static void Main()
{
// Arrays for demonstration
int[] num = { 8, 17,5 };
int[] divisors = { 2, 0, 4 };
// Iterate through numbers and divisors
for (int i = 0; i < num.Length; i++)
{
try
{
// Display current number and divisor
Console.WriteLine($"Number: {num[i]}");
Console.WriteLine($"Divisor: {divisors[i]}");
// Perform division
Console.WriteLine($"Quotient: {num[i] / divisors[i]}");
}
catch (DivideByZeroException)
{
// Handle division by zero
Console.WriteLine("Error: Division by zero is not allowed.");
}
catch (IndexOutOfRangeException)
{
// Handle invalid array index
Console.WriteLine("Error: Index is out of range.");
}
finally
{
// Execute cleanup code (if needed)
Console.WriteLine("Operation completed.\n");
}
}
}
}
OutputNumber: 8
Divisor: 2
Quotient: 4
Operation completed.
Number: 17
Divisor: 0
Error: Division by zero is not allowed.
Operation completed.
Number: 5
Divisor: 4
Quotient: 1
Operation completed.
Example 2: Handling Multiple Exception Types in Parsing
This example demonstrates using multiple catch blocks to handle exceptions such as FormatException (invalid input format) and OverflowException (data out of range).
C#
// C# program to demonstrate multiple catch clauses
using System;
class Geeks
{
static void Main()
{
try
{
// Trying to parse invalid input
byte data = byte.Parse("a");
Console.WriteLine($"Parsed Data: {data}");
}
catch (FormatException)
{
// Handle invalid input format
Console.WriteLine("Error: The entered value is not a valid number.");
}
catch (OverflowException)
{
// Handle data out of range for a byte
Console.WriteLine
("Error: The entered value is outside the valid range for a byte.");
}
catch (Exception ex)
{
// General exception handling (fallback)
Console.WriteLine($"Unexpected error: {ex.Message}");
}
finally
{
// Execute code regardless of exceptions
Console.WriteLine("Operation completed.");
}
}
}
OutputError: The entered value is not a valid number.
Operation completed.
Important Points:
- The catch blocks are evaluated in the order they appear. Ensure more specific exceptions (e.g., DivideByZeroException) appear before more general ones (e.g., Exception).
- Use a finally block for cleanup operations like closing resources, which should run regardless of whether an exception is raised.
- Always use a general catch (Exception ex) block at the end to handle any unexpected exceptions.
Similar Reads
C# Tutorial C# (pronounced "C-sharp") is a modern, versatile, object-oriented programming language developed by Microsoft in 2000 that runs on the .NET Framework. Whether you're creating Windows applications, diving into Unity game development, or working on enterprise solutions, C# is one of the top choices fo
4 min read
Introduction to .NET Framework The .NET Framework is a software development framework developed by Microsoft that provides a runtime environment and a set of libraries and tools for building and running applications on Windows operating systems. The .NET framework is primarily used on Windows, while .NET Core (which evolved into
6 min read
C# Interview Questions and Answers C# is the most popular general-purpose programming language and was developed by Microsoft in 2000, renowned for its robustness, flexibility, and extensive application range. It is simple and has an object-oriented programming concept that can be used for creating different types of applications.Her
15+ min read
C# Dictionary Dictionary in C# is a generic collection that stores key-value pairs. The working of Dictionary is quite similar to the non-generic hashtable. The advantage of a Dictionary is, that it is a generic type. A dictionary is defined under System.Collections.Generic namespace. It is dynamic in nature mean
5 min read
C# List Class In C#, the List<T> class represents the list of objects that can be accessed by index. It comes under the System.Collections.Generic namespace. List class can be used to create a collection of different types like integers, strings, etc. List<T> class also provides the methods to search,
7 min read
C# Delegates A delegate is an object which refers to a method or you can say it is a reference type variable that can hold a reference to the methods. It provides a way which tells which method is to be called when an event is triggered. For example, if you click on a Button on a form (Windows Form application),
6 min read
ASP.NET Interview Questions and Answer ASP.NET is a popular framework by Microsoft for building fast and scalable web applications. It allows developers to create dynamic websites, services, and apps, using server-side code and offering a user-friendly experience. Trusted by companies like Microsoft, Dell, and Accenture, ASP.NET is used
15+ min read
C# .NET Framework (Basic Architecture and Component Stack) C# (C-Sharp) is a modern, object-oriented programming language developed by Microsoft in 2000. It is a part of the .NET ecosystem and is widely used for building desktop, web, mobile, cloud, and enterprise applications. This is originally tied to the .NET Framework, C# has evolved to be the primary
6 min read
C# Data Types Data types specify the type of data that a valid C# variable can hold. C# is a strongly typed programming language because in C# each type of data (such as integer, character, float, and so forth) is predefined as part of the programming language and all constants or variables defined for a given pr
7 min read
C# Arrays An array is a group of like-typed variables that are referred to by a common name. And each data item is called an element of the array. The data types of the elements may be any valid data type like char, int, float, etc. and the elements are stored in a contiguous location. Length of the array spe
8 min read