Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice:


       

Índice
exclude.*ndice:


Objetivo:


       Auxiliar na implementação/manutenção do Snowden. 

Execução:


        Devemos realizar throw new Exception(); ou throw ex; apenas se temos a intensão de modificar os dados da exceção. Caso contrário, deve-se utilizar apenas a throw; pois desta forma, o StackTrace da Exception é preservado.

Ex.:                

Bloco de código
languagec#
public static void Main(string[] args)


    {


      try


      {


        StackTraceIncompleto();


      }


      catch (Exception ex)


      {


        Console.WriteLine($"StackTraceIncompleto:{Environment.NewLine}{ex.StackTrace}");


      }


 


      try


      {


        StackTraceCompleto();


      }


      catch (Exception ex)


      {


        Console.WriteLine($"StackTraceCompleto:{Environment.NewLine}{ex.StackTrace}");


      }


 


      Console.Read();


    }


    private static void StackTraceIncompleto()


    {


      try


      {


        GerarException();


      }


      catch (Exception ex)


      {


        throw ex;


      }


    }


    private static void StackTraceCompleto()


    {


      try


      {


        GerarException();


      }


      catch (Exception ex)


      {


        throw;


      }


    }


    private static void GerarException()


    {


      InvalidOperationException ex = new InvalidOperationException("Teste");


      throw ex;


    }


        No código acima, a Exception propagada pelo método StackTraceCompleto contemplará o método GerarException enquanto o método StackTraceIncompleto não, perdendo informações importantes para a análise do problema.


Resultado:

StackTraceIncompleto:

   em RM.ExceptionThrow.Program.StackTraceIncompleto() na c:\Projetos\RM.ExceptionThrow\RM.ExceptionThrow\Program.cs:linha 41

   em RM.ExceptionThrow.Program.Main(String[] args) na c:\Projetos\RM.ExceptionThrow\RM.ExceptionThrow\Program.cs:linha 15


StackTraceCompleto:

   em RM.ExceptionThrow.Program.GerarException() na c:\Projetos\RM.ExceptionThrow\RM.ExceptionThrow\Program.cs:linha 58

   em RM.ExceptionThrow.Program.StackTraceCompleto() na c:\Projetos\RM.ExceptionThrow\RM.ExceptionThrow\Program.cs:linha 52

   em RM.ExceptionThrow.Program.Main(String[] args) na c:\Projetos\RM.ExceptionThrow\RM.ExceptionThrow\Program.cs:linha 24


        Desta forma, devemos sempre levar em consideração se a exceção será tratada ou apenas propagada no ponto do catch


        Fonte: https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/keywords/throw

Informações
iconfalse
Informações
iconfalse

Produto: Framework

Informações
iconfalse

Versão: 12.01.XX

Informações
iconfalse

Processo: Throw em Exception

Informações
iconfalse
Informações
iconfalse

Status: Finalizado

Informações
iconfalse

Data: 15/01/2018

Informações
iconfalse

Autores:

Douglas Maxwell de Oliveira

Gabriel Dias De Oliveira Silva

Gustavo Henrique De Matos Rocha

Usuário desconhecido (fernando.souza)

Karina Dos Santos Costa

Rogerio De Resende Ohashi