gpt4 book ai didi

c# - 空消息异常

转载 作者:行者123 更新时间:2023-11-30 13:40:16 24 4
gpt4 key购买 nike

我发现在 C# 中异常消息不能为 null,并且在尝试之后

 var ex = new Exception(null);
Console.WriteLine(ex.Message);

我收到以下消息:

Exception of type 'System.Exception' was thrown.

但是,在这种情况下,

 var ex = new Exception(string.Empty);
Console.WriteLine(ex.Message);

消息只是空的。

这怎么解释?您认为这是预期的行为吗?

最佳答案

其他答案(不包括来自 chopikadze 的答案)似乎是基于对事实的误读。这两个示例都没有引发异常。

相反,在第一个示例中,构造的异常 ex 正在提供一条消息,因为构造函数的消息参数的值为 null。消息是“抛出了‘System.Exception’类型的异常”。

当对象引用为 null 时,有一些回退行为是一种相当普遍的做法,所以这就是“如何解释它”。当然,是否“预期”取决于您的预期。

在处理异常的过程中抛出异常是有问题的,所以框架设计者一定选择了这种行为来减少这种可能性。坦率地说,如果我们都必须考虑异常消息可能为空的可能性,那将是一场噩梦。

编辑

此行为也记录在 the remarks for the Message property 中: “如果没有向当前实例的构造函数提供消息,系统将提供使用当前系统区域性格式化的默认消息。”

我查看了 CLI 规范和 C# 规范,没有发现 Message 具有非空返回值的要求,所以我想这支持了这种行为是框架设计决策的观点。

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

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