知行编程网知行编程网  2022-12-13 19:30 知行编程网 隐藏边栏  2 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于浅谈Python异常处理机制的相关知识,包括java异常处理机制原理和应用,以及常见Python异常这些编程知识,希望对大家有参考作用。

浅谈Python异常处理机制

异常机制已经成为衡量编程语言成熟度的标准之一。使用异常处理机制的 Python 程序具有更好的容错性并且更健壮。

对于计算机程序,情况就更复杂了——没有人能保证自己编写的程序永远不会运行!即使程序没有错误,你能保证用户总是输入你想要的吗?就算用户很“聪明、配合”,你能保证运行程序的操作系统永远稳定吗?你能保证运行程序的硬件不会突然失效吗?你可以保证网络永远畅通……你不能保证的情况太多了!

对于一个程序设计者来说,要尽可能地预测所有可能出现的情况,尽可能保证程序在所有不良情况下都能运行。

考虑前面介绍的五子棋程序:当用户输入游戏的坐标时,程序需要判断用户的输入是否合法。如果保证程序有较好的容错性,就会有如下伪代码:

if 用户输入包含除逗号之外的其他非数字字符:
    alert 坐标只能是数值
    goto retry
elif 用户输入不包含逗号:
    alert 应使用逗号分隔两个坐标值
    goto retry
elif 用户输入的坐标值超出了有效范围:
    alert 用户输入的坐标应位于棋盘坐标之内
    goto retry
elif 用户输入的坐标已有棋子:
    alert "只能在没有棋子的地方下棋"
    goto retry
else:
    #业务实现代码
    ...

上面的代码没有涉及任何有效的处理,只是考虑了4种可能的错误,代码量急剧增加。但实际上,上面考虑的四种情况远远不能涵盖所有可能的情况(事实上,世界上有无数的意外),程序中可能出现的异常情况总是比程序员可以考虑的意外多。

而正如前面所说,自大的程序员在开发程序时更倾向于思考:“是的,错误可能会发生,但那是别人造成的,关我什么事”。

如果每次都在实现真正的业务逻辑之前,还要不厌其烦地考虑各种可能的错误情况,并针对各种错误情况给出补救措施,那将是多么乏味。程序员喜欢解决问题,喜欢开发带来的“创造”的乐趣,但不喜欢像一个“堵漏”工,堵住那些因外界条件造成的“漏洞”。

对于构建大规模、健壮和可维护的应用程序,错误处理是整个应用程序的一个重要方面。程序员不能只做“正确”的事。程序员开发程序的过程是一个创造性的过程。过程需要综合考虑,仅仅做“正确”的事情是不够的。

对于上面的错误处理机制,主要有两个缺点:

不可能详尽列出所有异常情况。由于人类知识的局限性,总是有比能够考虑的更多的异常情况,总有“漏网之鱼”的异常情况,所以程序总是不够健壮。

错误处理代码和业务实现代码混在一起。这种混合错误处理和业务实现的代码严重影响了程序的可读性,增加了程序维护的难度。

程序员希望有一个强大的机制来解决上面的问题,希望把上面的程序改成下面的伪代码:

if 用户输入不合法:
    alert 输入不合法
    goto retry
else :
    #业务实现代码
    ...

上面的伪代码提供了一个非常强大的“if块”,即不管输入错误的原因是什么,只要用户输入不符合要求,程序就会一次性处理所有的错误。这种方式的好处是让错误处理代码更有条理,只需要在一个地方处理错误。

现在的问题是,如何定义“用户输入非法”的条件?当然,对于这种简单的需求,可以使用正则表达式来匹配用户输入。当用户输入与正则表达式不匹配时,可以判断为“用户输入不合法”。但对于更复杂的情况,就没那么简单了。使用Python的异常处理机制可以解决这个问题。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享