浅谈Python异常处理机制

异常机制已成为衡量编程语言是否成熟的标准之一,并采用异常处理机制 Python 程序具有更好的容错性和更强的力量。
对于计算机程序来说,情况更为复杂。没有人能保证他们编写的程序永远不会很难!即使程序没有错误,你能保证用户总是按照你的意愿输入吗?即使用户非常“聪明和合作”,你能保证程序的操作系统永远稳定吗?你能保证程序的硬件不会突然损坏吗?你能保证网络永远畅通无阻。。有太多的情况你不能保证!
对于程序设计师来说,有必要尽可能预测所有可能的情况,并确保程序能够在所有不良情况下运行。
考虑上述五子棋程序:当用户输入下棋坐标时,程序应判断用户输入是否合法。如果程序具有良好的容错性,则会有以下伪代码:
if用户输入除逗号外的其他非数字符: alert坐标只能是数值 gotoretry elif用户输入不包括逗号: alert应该用逗号分隔两个坐标值 gotoretry elif用户输入的坐标值超出了有效范围: alert用户输入的坐标应位于棋盘坐标内 gotoretry elif用户输入的坐标有棋子: alert"只能在没有棋子的地方下棋" gotoretry else: #实现业务代码 ...
上述代码还没有涉及任何有效的处理,只是考虑到了 4 一个可能的错误,代码量已经急剧增加。但事实上,上述考虑因素 4 这种情况远不包括所有可能的情况(事实上,世界上的事故是不可穷举的),程序可能的异常情况总是超过程序员可以考虑的事故。
正如前面提到的,骄傲的程序员在开发程序时更倾向于认为:“是的,错误可能会发生,但这是别人造成的,与我无关。”
每次在实现真正的业务逻辑之前,你都需要不厌其烦地考虑各种可能的错误,并对各种错误情况采取补救措施。多么无聊的事情啊。程序员喜欢解决问题,喜欢开发带来的“创造”乐趣,但他们不喜欢像“堵塞”工人一样堵塞外部条件造成的“漏洞”。
对于大型、强大、可维护的应用程序,错误处理是整个应用程序需要考虑的一个重要方面,程序员不能只做“正确”的事情,程序员开发程序的过程,是一个创建过程,这个过程需要综合考虑,只做“正确”的事情远远不够。
上述错误处理机制主要有以下两个缺点:
无法解释所有异常情况。由于人类知识的限制,异常情况总是超过可以考虑的情况,总是有“漏鱼”的异常情况,所以程序总是不够强大。
错误处理代码与业务实现代码混合。这种错误处理和业务实现的混合代码严重影响了程序的可读性,增加了程序维护的难度。
程序员希望有一个强大的机制来解决上述问题,并希望将上述程序改为以下伪码:
非法输入if用户: alert输入不合法 gotoretry else: #实现业务代码 ...
上面的伪码提供了一个非常强大的“if 块”,也就是说,无论输入错误的原因是什么,只要用户输入不符合要求,程序就会一次处理所有错误。这种处理方法的优点是,只要在一个地方处理错误,错误处理代码就会变得更加有组织。
现在的问题是如何定义“非法用户输入”的条件?当然,对于这个简单的要求,用户输入可以通过使用正则表达式来匹配。当用户输入与正则表达式不匹配时,可以判断“非法用户输入”。但对于更复杂的情况来说,就没那么简单了。使用 Python 这个问题可以通过异常处理机制来解决。
