我正在构建一个数据访问层,它将用于两种类型的应用程序。
不关心错误细节的应用程序。如果发生异常,则很可能只是记录,用户可能不知道它。
示例:简单条形码库存应用。用户输入条形码,如果连接可用于数据库,则系统提供一些额外信息,如果没有,则仅在本地记录条形码。在这种情况下,我不想要细节异常处理。
我非常关心例外细节的应用程序。
在构建DAL时我必须遵循什么策略才能适应这两个类别?
现在我正在构建第一个类别的应用程序,我在DAL方法中所做的就是让异常冒泡到表示层,在那里我有几个try..catch
块以便制作简单处理日志记录,让用户不知道他的错误。
答案 0 :(得分:2)
错误处理是从知道需要知道的人的代码部分获取信息。 DAL知道如何pritty打印SqlException,SqlCommand和SqlParameters集合的跟踪。但UI知道导致异常的整个调用堆栈。用户可能不知道如何处理这些信息,因此您应该登录到单独的渠道,例如发送给开发人员的电子邮件或数据库中的日志。
如果您正在编写错误记录器,我还建议使用真实应用程序(或几个实际应用程序)作为库的测试。例如,您可以将错误记录器连接到codeplex上的各种应用程序,并查看故障排除中的难点,或者尝试dogfooding并使用错误记录器记录错误是您自己的库。