Pessoal,

Segue um exemplo utilizando try e catch. Essencial para pegar o verdadeiro erro. O segredo é sempre começar do erro mais específico para depois ir para um erro genérico. Espero ter ajudado alguma coisa.

private static string CheckPort(string port)
  {
   try
   {
       int.Parse(port);
   }
   catch (ArgumentNullException)
   {
    Logging.Error(System.Windows.Forms.Application.ProductName, "Port may not be null.");
   }
   catch (FormatException)
   {
    Logging.Error(System.Windows.Forms.Application.ProductName, "Port must be a numeric string.");
   }
   catch (OverflowException)
   {
    Logging.Error(System.Windows.Forms.Application.ProductName, "Port may not be null.");
   }
   return port;
  }