[Dúvida] Método C# lançando Exception! [RESOLVIDO]

Olá, pessoal do GUJ!

Vamos a mais uma dúvida…

Em Java, faço assim:

public void myMethod() throws Exception {
   
   //...
}

Assim, trato essa possível exceção onde estiver chamando este método.

Como fazer isso em .NET?

Forte abraço!

Diferentemente do Java, o C# não pode definir exceções na assinatura do método.
O que você pode fazer é reportar as possíveis exceções que podem ser lançadas na “XML Documentation” dessa função.

/// <exception cref='System.Exception'>Quando a Lua , Sol e Júpiter estão em conjunção com Marte</exception>
public void NaoTemComoDarErrado() 
{
    // bla
}

Olá, enantiomero!

Legal…Coloquei essa anotação XML acima do método…

Por exemplo, se eu fizer algo assim:

// Aqui é meu Main:

static void main(String[] args) {

   try {
    
        Classe.RequestConnection();
   }
   catch (Exception myException) {

      Console.WriteLine(myException.Message.ToString());
   }
}


// Essa é a classe que tem o método exemplificado no último post.

class Classe {

   /// <exception cref='System.Exception'>Quando não funcionar a requisição de conexão.</exception>
   
   public PgSqlConnection RequestConnection() {

      //...
      //...
      //...
     // Opa! Dá pau aqui!
   }
}

Vai reconhecer que é a exceção que foi gerada no método RequestConnection()?

Ele reconhece mesmo se você não usar a XML Documentation. Ela serve apenas para você documentar seu código.

Foi uma decisão do C# só ter RuntimeExceptions.

Dá uma lida: http://www.artima.com/intv/handcuffs.html

Então, só para confirmar…

Posso deixar o meu método RequestConnection() sem um bloco “try/catch” que, se a exceção for tratada na classe acima, vai pegar, certo?

[]'s

Sim senhor. Como eu disse, é bom deixar documentado, até para você não ter problemas mais tarde.

Fazendo novamente a analogia com o Java, é como se todas as exceções do C# fossem filhas de RuntimeException.

É o mesmo que acontece quando estoura um IndexOutOfBoundsException num ArrayList.

Entendi! Obrigado, enantiomero e Vini!!

Abraço!