C# Tutorial

C# Tutorial C# First Application C# Variables C# Data Types C# Operators C# Keywords

C# Control Statement

C# If Statements C# Switch Statements C# for Loop C# While Loop C# do While loop C# Jump Statements C# Function C# functions with out variable

C# Arrays

C# Arrays

C# Function

C# Function call by value C# Call by reference C# Passing array to function C# Multidimensional Arrays C# Jagged Arrays C# Params C# Array Class C# Command Line Arguments

C# Object Class

C# Object and Classes C# Constructors C# Destructor C# this Keyword C# static field C# static class C# Static Constructor C# Structs C# enum C# Properties

C# Inheritance

C# Inheritance C# Multilevel Inheritance C# Aggregation C# Member overloading C# Method Overriding C# Base

C# Polymorphism

C# Polymorphism C# Sealed

C# Abstraction

C# Abstraction C# Interface

C# Namespace

C# Namespace C# Access Modifiers C# Encapsulation

C# Strings

C# String

C# Misc

C# Design Patterns Dictionary in C# Boxing and Unboxing in C# Ref and Out in C# Serialization in C# Dispose and Finalize in C# CONSOLE LOG IN C# Get File extension in C# Insert query in c# Difference Between List and Dictionary in C# Getters and Setters in C# Extension Methods in C# Insert query in c# CONSOLE LOG IN C# Get File extension in C# Random.NextDouble() Method in C# Binary Search in C# Difference between Delegates and Interfaces in C# Double.IsFinite() Method in C# Index Constructor in C# Abstraction in C# Basic OOPS Concepts In C# Queue.CopyTo() Method in C# single.compareto() method in C# C# Throw Exception in Constructor DECODE IN C# file.setlastwritetimeutc() method in C# Convert Object to List in C# convert.ToSByte(string, IFormatProvider) Method in C# C# Declare Delegate in Interface console.TreatControl C As Input property in C# Copying the queue elements to 1-D Array in C# Array.Constrainedcopy() Method in C# C# in and out Char.IsLetterOrDigit() method in C# Debugging in C# decimal.compare() method in C# Difference between Console.Read and Console.Readline in C# Metadata in C# C# Event Handler Example Default Interface Methods in C# Difference between hashtable and dictionary in C# C# program to implement IDisposable Interface Encapsulation in C# SortedList.IndexOfVaalue(Object) Method in C# Hash Maps in C# How to clear text files in C# How to Convert xls to xlsx in C# Foreach loop in C# FIFO in C# How to handle null exception in C# Type.Is Instance Of Type() Method in C# How to add data into MySQL database using C# How to use angular js in ASP net Csharp decimal.compare() method in Csharp Difference between Console.Read and Console.Readline in Csharp How to Implement Interface in Csharp char.IsUpper() Method in C# Index Of Any() Method in C# Quantifiers in C# C# program to Get Extension of a Given File C# Error Logging C# ENCRIPTION Can we create an object for Abstract Class in C# Console.CursorVisible in C# SortedDictionary Implementation in C# C# Hash Table with Examples Setting the Location of the Label in c# Collections in c# Virtual Keyword in C# Reverse of string in C# String and StringBuilder in C# Encapsulation in C# SortedList.IndexOfVaalue(Object) Method in C# Hash Maps in C# How to clear text files in C# How to Convert xls to xlsx in C# Foreach loop in C# FIFO in C# How to handle null exception in C# Type.Is Instance Of Type() Method in C# How to add data into MySQL database using C# How to use angular js in ASP net Csharp decimal.compare() method in Csharp Difference between Console.Read and Console.Readline in Csharp How to Implement Interface in Csharp char.IsUpper() Method in C# Index Of Any() Method in C# Quantifiers in C# C# program to Get Extension of a Given File Difference between ref and out in C# Singleton Class in C# Const And Readonly In Csharp BinaryReader and BinaryWriter in C# C# Attributes C# Delegates DirectoryInfo Class in C# Export and Import Excel Data in C# File Class in C# FileInfo Class in C# How to Cancel Parallel Operations in C#? Maximum Degree of Parallelism in C# Parallel Foreach Loop in C# Parallel Invoke in C# StreamReader and StreamWriter in C# TextReader and TextWriter in C# AsQueryable() in C# Basic Database Operations Using C# C# Anonymous Methods C# Events C# Generics C# Indexers C# Multidimensional Indexers C# Multithreading C# New Features C# Overloading of Indexers Difference between delegates and events in C# Operator overloading in C# Filter table in C# C# Queue with Examples C# Sortedlist With Examples C# Stack with Examples C# Unsafe Code File Handling in C# HashSet in C# with Examples List Implementation in C# SortedSet in C# with Examples C# in Depth Delegates and Events in C# Finally Block in C# How to Split String in C# Loggers in C# Nullable Types in C# REVERSE A STRING IN C# TYPE CASTING IN C# What is Generics in C# ABSTRACT CLASS IN C# Application of pointer in C# Await in c# READONLY AND CONSTANT IN C# Type safe in C# Types of Variables in c# Use of delegates in c# ABSTRACT CLASS IN C# Application of pointer in C# Await in c# READONLY AND CONSTANT IN C# Type safe in C# Types of Variables in c# Use of delegates in c# ABSTRACT CLASS IN C# Application of pointer in C# Await in c# READONLY AND CONSTANT IN C# Type safe in C# Types of Variables in c# Use of delegates in c# Atomic Methods Thread Safety and Race Conditions in C# Parallel LINQ in C# Design Principles in C# Difference Between Struct And Class In C# Difference between Abstraction and Encapsulation in C# Escape Sequence Characters in C# What is IOC in C# Multiple Catch blocks in C# Appdomain in C# Call back methods in C# Change Datetime format in C# Declare String array in C# Default Access Specifier in c# Foreach in LINQ C# How to compare two lists in C# How to Convert String to Datetime in c# How to get only Date from DateTime in C# Ispostback in asp net C# JSON OBJECT IN C# JSON STRINGIFY IN C# LAMBDA FUNCTION IN C# LINQ Lambda Expression in C# Microservices in C# MSIL IN C# Reference parameter in C# Shadowing(Method hiding) in C# Solid principles in C# Static Members in C# Task run in C# Transaction scope in C# Type Conversion in c# Unit of Work in C# Unit Test Cases in c# User Defined Exception in c# Using Keyword in C# Var Keyword in C# What is gac in C#

Finally Block in C#

In C#, an exception can result in an error that terminates the active method. This approach might have started a network or file that needs to be closed. Thus, C# offers a specific keyword called the finally keyword which is used to address these kinds of issues. In C#, it is a reserved keyword.

The finally block runs in every condition by which the try/catch block exits the execution. It always runs, regardless of how the try block ends normally or as a result of an exception. The release of system resources is the primary goal of the finally block. After the try/catch block comes the finally block.

The establishment of a block by the keyword finally ensures that all the statements within it are executed without fail, regardless of whether an exception has happened or not. This means that the statement includes in the finally block is guaranteed to be executed regardless of whether an exception is thrown in the try block or not and regardless of whether the exception is handled by the catch block or not.

Syntax of finally block in C#

try {

    // statements

}

catch {

   // statements

}

finally

{

    // statements

}

In this, firstly try and catch block executed, and after the execution of the exception block, finally block is executed.

Points to remember while executing Finally Block

  1. Multiple finally blocks are not permitted in a single C# program.
  2. Every try block contains a finally block
  3. The catch block is optional while executing the finally block.
  4. There is no return, continue, or break statements in the finally block as it does not allow controls to leave the finally block.
  5. Every try block contains more than one or no catch blocks but it must contain at most one finally block. 

Why Should We Use Finally Block in C#?

We have to work with external resources for our programs in numerous applications. Files, network connections, graphic elements, pipes, and streams to or from various hardware devices (such as printers, card readers, and others) are examples of external resources. When dealing with such external resources, it is crucial to release them as soon as possible after they are no longer required. For instance, we must immediately close the file after reading its contents when we open a file to read its contents (let's say to load a JPG image). If we leave the file open, the operating system will block specific operations on the file from being performed by other users and apps.

The finally block is used to free an external resource or for cleanup. The finally block ensures that cleanup procedures won’t be mistakenly skipped as a result of an unknown exception or the execution of return, continue, or break.

Let’s understand the concept of the finally block with a few examples in C#.

Example 1: A simple program to demonstrate the finally block.

CODE

using System;

class Project {

    static void A()

    {

        try {

            Console.WriteLine("Inside A");

            throw new Exception("Throwing Exception");

        }

        finally

        {

            Console.WriteLine("A's finally");

        }

    }

      static void B()

    {

        try {

            Console.WriteLine("Inside B");

            return;

        }

        finally

        {

            Console.WriteLine("B's finally");

        }

    }

public static void Main(String[] args)

{

    try {

        A();

    }

    catch (Exception) {

        Console.WriteLine("Exception Caught");

    }

    B();

}

}

OUTPUT

Finally Block in C#

In this code, we have determined how the finally block is executed. A method named A is made which throws an exception and has the finally block. It is called under the try-catch block. There is another method named B which also has the finally block and is called outside the try-catch block.

Example 2: Program to demonstrate the use of finally block with the handled exception in C#.

CODE

using System;

public class Temp {

      static public void Main()

    {

        int num = 14;

        int div = 0;

        try {

            int out = num / div;

        }

        catch ( DividingByZero ) {

            Console.WriteLine("Not possible to divide by zero!");

        }

        finally {

            Console.WriteLine("Finally Block!");

        }

    }

}

OUTPUT

Finally Block in C#

In this program, an exception DividingByZero is made inside the try block that is captured by the catch block. Then, the finally block is executed when the try-catch block leaves the execution which releases the system resources that are being used by the try-catch block before it finished its execution.

Example 3: Program to understand the use of the finally block without the catch block in C#.

CODE

using System;

namespace example

{

    class resource

    {

        static void S_Method()

        {

            try

            {

                Console.WriteLine("Inside SomeMethod");

                int num1 = 10, num2 = 0;

                int result = num1 / num2;

                Console.WriteLine($"Result: {result}");

            }

            finally

            {

                Console.WriteLine("SomeMethod finally Block");

            }

        }

        static void Main(string[] args)

        {

            try

            {

                S_Method();

            }

            catch (Exception)

            {

                Console.WriteLine("Exception Caught");

            }

            Console.ReadKey();

        }

    }

}

OUTPUT

Finally Block in C#

In this code, no catch block is there. The finally block is used only with the try block

Benefits of Using Finally Block

  • The finally code is executed regardless of the execution, which means whether the execution is handled on not but the finally block will be executed.
  • The basic use of the finally block is to release the expensive resources of the try block.
  • It ensures the execution of the code is performed regardless of the exception thrown.