好的把Exception放在EventArgs中?

时间:2011-04-05 03:38:44

标签: c# events

我正在构建一个信使库,我对如何正确地向用户报告特定错误提出了疑问。

主要的Messenger类有两种状态 - 登录并注销。

内部发生的错误可能导致客户端注销。

例如,DisconnectException(如果内部发生SocketException),或者如果客户端无法完成信使服务器发出的质询,则为ChallengeFailedException。

是否可以(或推荐)将异常传递给LogoutEventArgs中的用户?例如 - LogoutEventArgs.Exception

或者有更理想的方法来解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

如果不期望异常(即,它确实是异常情况),那么您应该只是抛出异常,以便用户可以使用 catch 语句来处理任何特定的异常类型。

如果从另一个线程抛出异常,您可以将其包装在另一个异常中并将其抛出到调用线程上。

如果它是预期的常见错误条件,那么它取决于用户在这种情况下应该做什么。像枚举或自定义错误类之类的东西可能比仅仅在EventArgs对象中粘贴异常更好。自定义对象也可以包含对Exception对象的引用。

答案 1 :(得分:2)

我有一个类吞下一些已知的异常,例如sql server超时。这是我的客户不需要处理这个,我的类捕获它并返回错误枚举。 我发现了捕获的异常,因此我的客户可以选择记录它们。我不希望我的类具有日志记录依赖性。