什么是Python异常处理机制

发布时间:2020-08-26 09:22:44 作者:Leah
来源:亿速云 阅读:319

今天就跟大家聊聊有关什么是Python异常处理机制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

异常机制己经成为衡量一门编程语言是否成熟的标准之一,使用异常处理机制的 Python 程序有更好的容错性,更加健壮。

对于计算机程序而言,情况就更复杂了一一没有人能保证自己写的程序永远不会出辛苦!就算程序没有错误,你能保证用户总是按你的意愿来输入?就算用户都是非常“聪明而且配合”的,你能保证运行该程序的操作系统永远稳定?你能保证运行该程序的硬件不会突然坏掉?你能保证网络永远通畅……你无法保证的情况太多了!

对于一个程序设计人员来说,需要尽可能预知所有可能发生的情况,尽可能保证程序在所有糟糕的情形下也都可以运行。

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

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

上面代码还未涉及任何有效处理,只是考虑了 4 种可能的错误,代码量就己经急剧增加了。但实际上,上面考虑的 4 种情况还远未包括所有可能的情况(事实上,世界上的意外是不可穷举的),程序可能发生的异常情况总是多于程序员所能考虑到的意外情况。

而且正如前面所提到的,高傲的程序员在开发程序时更倾向于认为:“对,错误也许会发生,但那是别人造成的,不关我的事”。

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

对于构造大型、健壮、可维护的应用而言,错误处理是整个应用需要考虑的重要方面,程序员不能仅仅只做“对”的事情,程序员开发程序的过程,是一个创造的过程,这个过程需要有全面的考虑,仅做“对”的事情是远远不够的。

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

无法穷举所有的异常情况。因为人类知识的限制,异常情况总比可以考虑到的情况多,总有“漏网之鱼”的异常情况,所以程序总是不够健壮。

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

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

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

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

现在的问题是,“用户输入不合法”这个条件怎么定义?当然,对于这个简单的要求,可以使用正则表达式对用户输入进行匹配,当用户输入与正则表达式不匹配时即可判断“用户输入不合法”。但对于更复杂的情形,就没有这么简单了。使用 Python 的异常处理机制就可以解决这个问题。

看完上述内容,你们对什么是Python异常处理机制有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. 什么是python
  2. python的中异常处理机制

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python 异常处

上一篇:Vue.set 全局操作简单示例

下一篇:使用Vue实现调用接口加载页面初始数据

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》