0

我正在开发一个像脚本一样工作的小型应用程序。我会给它一些网址,它会从中提取一些有用的信息。当它下载文件和解析信息时,它也会引发事件,以便有一个监听器,它将能够读取它想要的所有内容。

系统基本如下:

class UrlInfoExtractor {
    ...

    public void Run() {
        ...
    }

    ...
}

与往常一样,存在出错的风险(即,目前没有互联网)。起初我认为让该Run()方法抛出我自己的一些异常(BadLoginException,BadUrlException等)是个好主意。但是由于已经有这么多已定义的事件,我开始认为将错误作为事件弹出可能会更好(我假设无论我遇到什么错误,我都会停止该过程)。整个系统的方法会更加……一致。另一方面,如果开发人员不关心错误事件,它会允许错误被忽视。

在这种情况下,我是更好地使用异常还是引发事件?

4

2 回答 2

3

如果它真的是一个错误,我会提出一个例外。使用事件的缺点是,如果调用者没有为异常事件添加处理程序,他们将不会收到错误通知,并且可能会假设一切正常。

如果你反对引发异常,你总是可以返回一个状态而不是你的函数是一个 void。这可能使您可以避免对控制流使用异常,但您仍然可以向调用者返回有关调用状态的信息。

于 2013-03-23T05:34:34.873 回答
1

如果您无论如何要停止脚本或应用程序,我建议您将异常冒泡。您可以在需要清理或保存状态的任何地方捕获并重新抛出它。将所有异常“隐藏”在事件后面并不是一个好主意。

如果您经常期待异常,如果您打算保持脚本运行,john 关于返回值而不是 void 的建议将使实现更清晰。

作为旁注,一致并不一定等同于“好”。尽可能使用语言功能来达到目的。

于 2013-03-23T06:49:43.357 回答