[英]Handling errors - should I use exceptions or events in an “event driven” application?
我正在开发一个像脚本一样工作的小型应用程序。 我会给它一些网址,它将从中提取一些有用的信息。 在下载文件并解析信息时,它还会引发事件,以便有一个侦听器,它将能够读取所需的所有内容。
系统基本如下:
class UrlInfoExtractor {
...
public void Run() {
...
}
...
}
与往常一样,存在错误的风险(即,目前没有互联网)。 起初,我认为让Run()
方法抛出我自己的一些异常( BadLoginException
, BadUrlException
等)是一个好主意。 但是,由于已经定义了很多事件,所以我开始认为将错误作为事件弹出可能会更好(我假设无论遇到什么错误,我都会停止该过程)。 系统的整个方法将更加一致。 另一方面,如果开发人员不关心侦听错误事件,则会使错误不被注意。
在这种情况下,我更好使用异常还是引发事件?
如果确实是一个错误,我会提出一个例外。 使用事件的不利之处在于,如果调用者未为异常事件添加处理程序,则不会通知他们有错误,并且可以假定一切正常。
如果您反对引发异常,则始终可以返回一个状态,而不是将函数设为空。 这样可以避免在控制流中使用异常,但仍可以将有关呼叫状态的信息返回给呼叫者。
如果您仍然要停止脚本或应用程序,建议将异常冒泡。 您可以在需要清理或保存状态的任何地方捕获并重新抛出它。 “隐藏”事件背后的所有异常很少是一个好主意。
如果经常遇到异常,则约翰建议返回值而不是void,这将使您在保持脚本运行的情况下实现更简洁的实现。
附带说明一下,一致性不一定等同于“良好”。 尽可能使用语言功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.