C# 在特定情况下处理一般异常
我试图通过ftp将文件从a移动到B,如下所示:C# 在特定情况下处理一般异常,c#,exception,exception-handling,C#,Exception,Exception Handling,我试图通过ftp将文件从a移动到B,如下所示: ftpClient.Rename(sourcePathName, targetPathName); 我想捕获并处理当必须移动的文件找不到时发生的所有异常。但是Rename抛出值为{“未找到文件/目录”}的通用异常FtpCommandException。不幸的是,在其他一些情况下会引发此异常 我不认为比较异常值是一种干净的方法,比如: if("file/directory not found".equals(exception.value)) ..
ftpClient.Rename(sourcePathName, targetPathName);
我想捕获并处理当必须移动的文件找不到时发生的所有异常。但是Rename
抛出值为{“未找到文件/目录”}
的通用异常FtpCommandException
。不幸的是,在其他一些情况下会引发此异常
我不认为比较异常值是一种干净的方法,比如:
if("file/directory not found".equals(exception.value)) ...
从C#6开始,您可以使用异常过滤
try
{
// your code
}
catch(FtpCommandException ex)
when (ex.Value == "file/directory not found")
{
// do something with this exception
}
在C#6之前,您唯一的选择是捕获内的条件:
try
{
// your code
}
catch(FtpCommandException ex)
{
if(ex.Value == "file/directory not found")
{
// do something with this exception
}
}
在尝试重命名之前,您可能应该检查文件是否存在:
if (ftpClient.FileExists(sourcePathName)){
ftpClient.Rename(sourcePathName, targetPathName);
}
如果您的异常需要以不同的方式处理,您能否使用自己的try/catch块将重命名代码拆分为自己的函数?