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!
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!