gpt4 book ai didi

c# - 在 C# 中覆盖异常消息

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:39 24 4
gpt4 key购买 nike

有没有办法覆盖异常消息?
我不想创建自定义异常,而是要覆盖现有异常的消息。
例如:
每次当一个ArgumentOutOfRangeException被抛出,我希望它包含我的消息而不是默认消息。

是否可以?

最佳答案

对于您抛出的异常,您可以将消息传递给构造函数:

throw new ArgumentOutOfRangeException("name", "My custom message");

注意这里, name是导致问题的参数的名称。在 C# 6 中,您应该使用 nameof运算符(operator)使此重构安全:
public void Foo(int x)
{
if (x > 10)
{
throw new ArgumentOutOfRangeException(nameof(x), "That's too big");
}
}

您无法修改其他代码抛出的异常消息,但可以捕获异常并重新抛出另一个异常:
try
{
...
}
catch (FooException e)
{
// Keep the original exception
throw new BarException("Some message", e);
}

不过,我会尽量避免这样做。如果您正在考虑向用户显示异常消息,我通常会回避 - 它们实际上是针对开发人员的。例如, ArgumentOutOfRangeException您建议通常应该指出代码中的错误,而不是某些外部条件(如网络故障或其他情况)——用户将无法对该错误做任何事情;这是你应该解决的问题。网络故障或类似的事情至少对用户采取行动更合理,但坦率地说,通常不清楚事件链是什么。

关于c# - 在 C# 中覆盖异常消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31398861/

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