1

我想知道哪个是打印功能最实用的选项。假设我有一台打印机和这样的打印方法。

 printerEngine.Print("StuffToPrint",Printer,Qty);

如果某些事情失败了,我应该返回一个布尔值(在这种情况下为 false)或引发一个 PrintingFailed 事件。

打印失败事件允许我添加更多关于它失败原因的上下文,但我不确定最佳的继续方式。

4

4 回答 4

4

另一个明显的选择是抛出异常,就像你试图写入文件或类似的东西一样。

该异常可以包含尽可能多的详细信息,您可以让它在堆栈中冒泡到最合适的位置来处理它。

如果该Print方法是异步的,您可能希望考虑返回 aTask并让它指示成功、失败、完成等(假设您使用的是 .NET 4)。

于 2012-05-30T16:11:08.637 回答
3

您可能希望因异常而失败,因为发生了一些异常导致您的打印作业失败。您可以在异常中包含尽可能多的详细信息并在需要的地方进行处理。仅当您预期会导致工作失败的事情发生时,才可能使用布尔值。

看看Eric Lippert 关于异常处理的这篇博客文章,它是一个很好的指南。

于 2012-05-30T16:12:50.517 回答
2

这取决于,您是想向用户提供失败的原因,还是将其记录到某种日志中?如果你想做其中任何一个,然后引发事件。

如果您不想执行这些操作并且只想确定它是否失败,只需使用bool.

于 2012-05-30T16:11:56.287 回答
1

添加一个bool返回值太简单了,无法开始枚举所有可能发生的问题。你可以有一些预先准备好的错误代码......但这仍然没有提供任何你需要的上下文。

一个事件是好的。它允许您返回丰富的信息。但是这两种方法都需要完全不同的编程模型。异常可以在调用它的同一个堆栈线程上处理。一个事件可能在完全不同的上下文中被调用。您可能没有可用的所有信息来正确处理使用异常可能遇到的故障。因此,权衡取舍取决于您。

于 2012-05-30T16:17:21.690 回答