1

如果异常来自同一类,如何检查它是登录信息异常还是连接丢失异常?

private bool checkFileExists(string absoluteRemoteLocation)
{
      try
      {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(absoluteRemoteLocation);
            request.Method = WebRequestMethods.Ftp.UploadFile;
            request.Timeout = timeOut;
            request.Credentials = new NetworkCredential(this.username, this.password);
            request.GetResponse();
            return true;
      }
      catch(Exception e) //i want to check here
      {
            var g = e.ToString();
            return false;
      }
}
4

4 回答 4

1

像这样使用不同的catch块:

catch (System.TimeoutException e)
{
    var g = e.ToString();
    return false;
}

catch (System.Net.WebException e)
{
    var g = e.ToString();
    return false;
}
于 2015-09-18T18:21:20.883 回答
0

使用isC# 的关键字。

<!-- language: C# -->
catch (Exception e) {
    if (e is LoginInfoException) // do something
    else if (e is ConnectionLostException) // do something else
}

作为参考,请查看链接。

于 2015-09-18T18:37:09.103 回答
0

这不是你想要的吗?

public class Program
{    
    public static void Main(string[] args)
    {
        try
        {           
                throw new ConnectionLostException();
        }
        catch (Exception ex)
        {

            if (ex is LoginInfoException)
            {
                Console.WriteLine ("LoginInfoException");
            }
            else if (ex is ConnectionLostException)
            {
                Console.WriteLine ("ConnectionLostException");  
            }
        }
    }
}

public class LoginInfoException : WebException
{
   public String Message { get; set; }

}

public class ConnectionLostException : WebException
{
   public String Message { get; set; }
}
于 2015-09-18T19:10:31.050 回答
0

这是一个将捕获不同异常的过滤器的简单示例。我不太了解您正在处理的异常的层次结构,但这将允许您过滤哪些异常在哪里被捕获。

public class CatchExceptions
{
    public void SomeMethod ()
    {
        try
        {
            //some stuff that throws exceptions
        }
        catch (WebException e) if (e is LoginInfoException)
        {}
        catch (WebException e) if (e is ConnectionLostException)
        {}
    }
}

显然,您必须弄清楚可以使用什么来过滤异常;看来我上面使用的两个例子不是具体的类型。您可能需要进行一些重组来弄清楚如何区分两者。

于 2015-09-21T14:25:54.207 回答