C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
| C# await in catch/finally blocksC# await is a keyword. It is used to suspend execution of the method until the awaited task is complete. In C# 6.0, Microsoft added a new feature that allows us to use await inside the catch or finally block. So, we can perform asynchronous tasks while exception is occurred. Let's see an example. Here, we are calling an asynchronous method inside the catch block. C# await in Catch Block Example
using System;
using System.Threading.Tasks;
using System.IO;
using static System.Console;
namespace CSharpFeatures
{
    public class ExceptionAwait
    {
        public static void Main(string[] args)
        {           
            addAsync();
        }
        async static Task addAsync()
        {
            try
            {
                int[] arr = new int[5];
                arr[10] = 12;
            }
            catch(Exception e) {
                // Using await in catch block
                await ExceptionOccured();
            }
        }
        async static Task ExceptionOccured()
        {
           Console.WriteLine("Array Exception Occurred");
        } 
    }
}
Output Array Exception Occurred We can also use await inside the finally block. Let's see an example. C# await in finally block example
using System;
using System.Threading.Tasks;
using System.IO;
using static System.Console;
namespace CSharpFeatures
{
    public class ExceptionAwait
    {
        public static void Main(string[] args)
        {
            addAsync();
        }
        async static Task addAsync()
        {
            try
            {
                int[] arr = new int[5];
                arr[10] = 12;
            }
            catch (Exception e)
            {
                // Using await in catch block
                await ExceptionOccured();
            }
            finally
            {
                // Using await in finally block
                await ReleasingResources();
            }
        }
        async static Task ExceptionOccured()
        {
            Console.WriteLine("Array Exception Occurred");
        }
        async static Task ReleasingResources()
        {
            Console.WriteLine("Resources has been released");
        }
    }
}
Output Array Exception Occurred Resources has been released 
Next TopicC# Auto-Initialize Property
 |