【发布时间】:2015-03-31 06:25:09
【问题描述】:
我有一个表单,它扩展了一些具有特殊异常处理逻辑的类,以便以干净的方式向用户呈现任何出现的问题。该 Form 包含一个自定义 UserControl,它有可能抛出异常,如果未解决,则不会被父 Form 捕获和重新抛出,因此不会遇到特殊逻辑。
我怎样才能让我的 UserControl 抛出异常到我的表单?
【问题讨论】:
-
你不能那样做。这不是异常的工作方式。它们总是向上调用堆栈。他们不知道用户控件是什么。如果您的设计要求您在父项中捕获用户控件异常,请立即停止并重新设计。没有办法做你想做的事,在任何情况下你都不应该这样做。
-
@JohnSaunders 显然,您在最具体的级别上是正确的——异常自然会在调用堆栈中上升——但想法是它们应该从子级流向父级。在这种情况下,需要在子级别响应错误的父级不是子级上下文的直接所有者。这是相当常见的。
-
“他们应该”?在哪个宇宙?不在这个中!谨防为其他人已经编写的软件发明架构。
-
那么,也许我错报了我的目标。我正在尝试将信息从 UserControl 发送到父窗体。您能否就我如何实现这一目标提供一些指导?批评是廉价的。
标签: c# .net winforms user-controls