Como não usar try-catch

Tenho andado recentemente a investigar a plataforma .NET dado que, apesar de não simpatizar muito com esta "tecnologia", necessito de corrigir uns bugs num site que se encontra todo feito sobre esta plataforma da Microsoft.

Ao fim de algumas pesquisas pelo google, ao passar num site sobre várias linguagens de programação, encontro este exemplo de código para um port-scanner em C#:

try {
     // Try to connect
     TcpScan.Connect("192.168.0.1", CurrPort);

     // If there's no exception, we can say the port is open
     MessageBox.Show("Port " + CurrPort + " open");
}
catch {
     // An exception occured, thus the port is probably closed
     MessageBox.Show("Port " + CurrPort + " closed");
}

O autor deste pedaço de código utiliza os try-catch para substituir a utilização de um simples if. E como se não bastasse, a função Connect pode libertar várias excepções, como ArgumentNullException, ArgumentOutOfRangeException, SocketException, entre outras, e neste código é tudo tratado como sendo a mesma excepção ou seja, como sendo o facto de o porto estar fechado. Isto é um perfeito exemplo de como não usar um try-catch. Os try-catch deveriam servir unicamente para tratar situações "anormais" no funcionamento do programa.

Por outro lado, depois de pesquisar sobre a função Connect, esta não facilita em muito a vida dos programadores, pois é uma função com retorno void, o que impossibilita saber o estado da ligação que foi estabelecida sem ser por tratamento de excepções...

Top