【问题标题】:handling property value that throws an exception处理引发异常的属性值
【发布时间】:2026-01-17 16:25:01
【问题描述】:

在检查 null 时,我遇到了一个 c# 属性引发异常的问题。 我无权访问包含导致此问题的属性的类,否则很容易解决。

基本上,我有一个包含 Imported_Class 的视图模型。 Imported_Class 使用共享库中的方法填充。当 Imported_Class 的属性抛出异常而不是返回 null 或值时,我遇到了问题。

它不会使应用程序崩溃,我只是无法检查 null 以防止任何可能的错误。

我可以将该属性分配给一个局部变量,包裹在 try/catch 中以捕获错误,但我发现这对于一个属性来说太笨重了。

我的问题的一个例子:

public string getPropertyA
{
  get { return Imported_Class.PropertyA; /* throws exception */ }
}

【问题讨论】:

  • 请不要只求我们为您解决问题。向我们展示如何尝试自己解决问题,然后向我们确切地展示结果是什么,并告诉我们您为什么觉得它不起作用。请参阅“What Have You Tried?”了解您真正需要阅读的优秀文章。
  • 没有太多的选择,要么让异常炸毁你的电脑,要么你抓住它。
  • an exception 可以是任何东西。有什么例外?
  • 抛出了哪个异常?如果是 nullreferenceexception 可能 Imported_Class 为 null 并且与对象的属性无关
  • 我已经告诉过你我的一个解决方案(将它包装在 try/catch 中),尽管它不是一个非常有效的解决方案,因为这个 Imported_Class 被用于许多地方,而不仅仅是一个位置.找到一种更有效的方法来处理它会很好,这就是我真正要问的。

标签: c# exception properties


【解决方案1】:

如果 Imported_Class 没有为您提供在获取属性之前测试条件的公共方式,那么我认为除了将调用包装在 try/catch 块中之外别无选择。

【讨论】:

  • 我希望有一种方法可以避免这种情况,但不幸的是我想我必须坚持下去。感谢您的快速回复!