将错误消息从C#DLL返回到C#程序?

Joh*_*n M 2 c# error-handling dll winforms

我已经将一个winforms程序类分解为一个单独的DLL.DLL在所有方法上使用try-catch来捕获错误.当仍然是一个winforms类时,我会捕获错误,记录它,然后通过MessageBox通知用户.使用DLL我正在捕获错误,记录它 - 但不知道如何通知用户有错误?

如何最好地通知用户DLL中存在错误?

Dam*_*ver 7

如果你想记录它,那么好吧,抓住它,记录它,然后抛出一个适当的例外,让消费者决定如何最好地处理它.如果您没有要添加的值,并且没有要更改的语义,那么只需在您的DLL中执行此操作:

catch(SpecificException ex)
{
     LogException(ex);
     throw;
}
Run Code Online (Sandbox Code Playgroud)

如果确实要添加更多信息,则使用包含该捕获异常的适当构造函数作为innerException值,抛出适当的新异常.

你不应该做的(我见过太多人尝试)是"聪明地"确定什么类型的应用程序正在使用DLL,并尝试从DLL中显示UI.即使您确实获得了所有当前使用方案的正确性("它只被WinForms应用程序使用过"),您现在已经限制了未来的重用潜力.

您应该让消费者决定自己的错误处理策略,而不是尝试从DLL中强加一个.