gpt4 book ai didi

c# - 尝试使用 switch 语句捕获消息

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:48 26 4
gpt4 key购买 nike

我试图在我的代码的 try catch block 中捕获异常。我有一些错误,例如错误的密码/未找到具有特定消息的文件,如果发现任何错误,我想设置代码。我正在尝试使用开关捕获消息。

  catch (Exception ex)
{
switch (ex.Message.ToString())
{
case "Can't get attributes of file 'p'":
Debug.WriteLine("wrong username/password");
MainController.Status = "2";
break;
case "Can't get attributes of file 'p'.":
Debug.WriteLine("File is not Available");
MainController.Status = "3";
break;

default:
Debug.WriteLine("General FTP Error");
MainController.Status = "4";
break;
}
}

我想使用 message.contains 方法,这样如果我在 ex.message 中得到错误消息的任何部分,那么它应该调用相关的案例,但我无法弄清楚如何使用 ex.message.contains .谁能帮帮我?

最佳答案

我强烈建议重构您的代码以使用自定义异常处理程序,而不是依赖这种“魔术字符串”方法。这种方法不仅难以维护,而且难以测试和调试,因为拼写错误不会被编译器捕获。

例如,您可以创建以下异常处理程序:

// Note: can probably be better handled without using exceptions
public class LoginFailedException : Exception
{
// ...
}

// Is this just a FileNotFound exception?
public class FileNotAvailableException : Exception
{
// ...
}

public class FtpException : Exception
{
// ...
}

然后您将能够单独捕获每个异常:

try
{
// ...
}
catch (LoginFailedException)
{
Debug.WriteLine("wrong username/password");
MainController.Status = "2";
}
catch (FileNotAvailableException)
{
Debug.WriteLine("File is not Available");
MainController.Status = "3";
}
catch (FtpException)
{
Debug.WriteLine("General FTP Error");
MainController.Status = "4";
}

这种方法是类型安全的,可以让您轻松测试和调试您的方法。它还可以防止拼写错误导致数小时的调试困难。

关于c# - 尝试使用 switch 语句捕获消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26247252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com