gpt4 book ai didi

C# 通过消息捕获异常

转载 作者:行者123 更新时间:2023-11-30 14:09:06 24 4
gpt4 key购买 nike

我需要用我的自定义异常消息来更改特定的系统异常消息。

捕获异常并在 catch block 内检查系统异常消息是否与特定字符串匹配并且如果匹配则抛出我的自定义异常是否是一种不好的做法?

try
{
...
}
catch (System.Security.Cryptography.CryptographicException ex)
{
if (ex.Message.Equals("The specified network password is not correct.\r\n", StringComparison.InvariantCultureIgnoreCase))
throw new Exception("Wrong Password");
else
throw ex;
}

或者有更好的方法来实现这一点。

最佳答案

在 catch 语句中抛出异常本质上没有错。但是,有几点需要牢记:

使用“throw”而不是“throw ex”重新抛出异常,否则您将丢失堆栈跟踪。

来自[创建和抛出异常] 1 .

Do not throw System.Exception, System.SystemException,System.NullReferenceException, or System.IndexOutOfRangeExceptionintentionally from your own source code.

如果 CrytographicException 确实不适合您,您可以创建一个特定的异常类来表示无效密码:

try
{
...
}
catch (System.Security.Cryptography.CryptographicException ex)
{
if (ex.Message.Equals("The specified network password is not correct.\r\n",
StringComparison.InvariantCultureIgnoreCase))
throw new InvalidPasswordException("Wrong Password", ex);
else
throw;
}

请注意原始异常是如何保留在新的 InvalidPasswordException 中的。

关于C# 通过消息捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31365893/

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