10.10 (现在)为什么用异常
毫无疑问,错误的存在会伴随着软件的存在。区别在于当今快节奏的计算世界,我们的执行环境已经改变,所以我们需要改变错误处理,以准确反映我们软件的开发环境。就现今应用来说,普遍的是自备(self-contained)的图形用户界面(GUI)或是客户机/服务器体系,例如Web。
在应用层处理错误的能力近来变得更为重要,用户已不再是应用程序的的唯一的直接运行者。随着互联网和网上电子商业应用越来越普及,web服务器将成为应用软件的主要客户。这意味着应用程序再也不能只是直接的失败或崩溃,因为如果这样,系统错误导致浏览器的错误,这反过来又会让用户沮丧。失去眼球意味着失去广告收入和和潜在的大量无可挽回的生意。
如果错误的确发生了,它们一般都归因于用户输入的数据无效。运行环境必须足够强健,来处理应用级别的错误,并提供用户级别的错误信息。就服务器而言,这必须转化为一个“非错误”因为应用必须要成功完成,即使所做的不过是返回一个错误的信息,向用户是提供一个有效的超文本标记语言(HTML)的网页指明错误。
如果你不清楚我在说什么,那么一个简单的网页浏览器窗口,用大而黑的字体写到“内部服务器错误”是否更耳熟?用一个弹出式窗口宣告“文件中没有数据”的致命错误如何?作为一个用户,这些词语对你有意义吗?没有,当然没有(除非你是一个互联网软件工程师),至于对普通用户来说,这些是无休止的混乱和挫折感的来源。这些错误导致在执行的程序时的失败。应用不论是返回无效的超文本传输协议(http)数据还是致命地终止,都会导致Web服务器举手投降,说:“我放弃!”
这种类型的执行错误不应该被允许,无论情况如何。随着系统变得更加复杂,又牵涉到更多的新手用户,要采取额外的措施,确保用户平滑地学到应用经验。即使面对一个错误,应用应该成功的中止,不至于灾难性的影响其执行环境。Python异常处理促使成熟和正确的编程。