我正在创建一个 3 层应用程序,但在处理错误时遇到了问题。我不知道我是否应该抛出异常或调用方法将问题传达给其他层。
这是一个简单的例子,我有:
- 允许用户在列表中选择文件的 FileChooserFrame
(表示层)。
- 一个 DataHandler
(应用层),它对文件的路径做一些事情,并在表示层和数据层之间建立链接。
- 解析文件并从中获取数据的 FileParser
(数据层)。
现在假设文件必须遵循特殊结构,如果不是,我想显示一个 MessageBox。
我无法知道用户在解析之前是否选择了一个好的文件。
我的问题是,当我发现文件不符合结构时我该怎么办?
我想到了两件事:
1 - 停止当前操作并调用 DataHandler
中的方法(例如 NotifyWrongFileErr()
),该方法将要求框架显示消息框。
2 - 抛出一个我在 FileChooserFrame
中捕获的自定义异常,它将显示弹出窗口。
这两种情况各有利弊,所以我无法在它们之间做出选择。最合适的做法是什么?
PS:如果是第 2 种情况,我应该在哪里编写 Exception 类?在专用于应用异常的文件中,还是在将抛出异常的类旁边?
最佳答案
好吧,这是您的选择,异常的最佳实践通常是仅在您没有预料到的情况下抛出异常。由于您希望某人能够选择无效的文件名,因此调用该方法可能被认为是“最佳实践”。但还是那句话,没有对错之分,做自己喜欢的事,只要自己开心就好。如果是我,我会为这样的事情创建一组数据层异常并抛出它们,如果我想使用一些测试代码 (IoC) 测试数据层,我会看到异常。
关于c# - 错误处理 : Exceptions vs Error method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671581/