Tag Archives: EXCEPTIONS

I Love C#, 6 Await In Catch

Await In Catch

Continuando a saga para conhecer as novas features do C#6 projetadas para nos ajudar na codificação de nossos aplicativos. Vamos lá:

Hoje o C#6 apresenta o sexto recurso, o TryCatch com método Async. Um recurso implementado que permite tratar métodos assincronos em um bloco try…catch.

Um problema que tínhamos neste tipo de programação era o tratamento de exceção. Tratar um erro dentro deste método assíncrono não era nada trivial.

Chega de teoria!

  • Project : Console Application
  • Visual Studio : Community 2015 (RC)
  • .NET FW : 4.6

Sintaxe

try 
    … 
catch 
    {await …} 
Finally
    {await …}

Metódo Assincrono

public async Task<int> Calculo()
{
    try
    {
        // Code
    }
    catch
    {
        await Task.Delay(4);
    }
    finally
    {
        await Task.Delay(4);
    }
}

Aqui temos um método assíncrono que realiza um calculo simples. Mas, quando era preciso tratar um erro dentro deste método não era nada trivial.

Outro exemplo:

public static async void DownloadAsync()
{
	try
	{
		throw new Exception("Error");
	}
	catch
	{
		await Task.Delay(2000);
		WriteLine("Waiting 4 seconds");
	}
	finally
	{
		await Task.Delay(2000);
		WriteLine("Waiting 4 seconds");
	}
}

Então é isso treine bastante, e fiquei familiarizado com estes novos recursos.

A Programação Assincrona

Este tipo de programação nos oferece a possibilidade de executar muitas coisas em paralelo. Podemos desenvolver para Asp.net de forma assíncrona e para móveis esta característica já é Nativa.

Async, tem muita coisa acontecendo!

Ok! Um pouco sobre o AWAIT IN ASYNC do C#6.