Python 的异常处理

简介: Python 的异常处理

首先,我们得承认,没有任何一位程序员同学是完美的,写的代码也不可能是无可挑剔的,即使再简单的程序,要把里面所有可能出现的错误都预判到的话,也是不太现实的,就跟你永远不知道女朋友啥时候会不开心一样。

你的程序,可能会在运行时发生各类异常(也叫 Exception),所以,如果要保证程序足够健壮,则必须要设置异常处理模块。

异常处理,是一种特定的程序出错处理机制,是为了让开发者更加高效、更加专注在正常的程序设计上。

就好像,你给你的代码,请了一个永不休息的「代码保安」,时时刻刻帮你「盯着」你那些有可能会出错的代码。

大家都知道,除数是不能为 0 的对吧?先来看一段「有异常」的代码.

案例代码:

num = 12 / 0
print(num)

当我们执行上面的程序时,会报出一个异常:ZeroDivisionError: division by zero,指出你的 0 其实不能当除数。

当然,除了「ZeroDivisionError」以外,还有很多其他的错误类型,比如 NameError、TypeError、FileNotFoundError……这些都比较常见的异常情况。

有了异常,并不可怕,我们需要有对应的异常处理方式,这样才能以不变应万变,保证你的程序、数据,甚至说系统不会被遭到破坏性的灾难级后果。

我们在处理的时候,也需要稍微注意两点:

  • 不破坏原来程序的结构;
  • 要根据错误的类型,做好对应的错误处理,灵活变化;

我们可以使用 try…except… 块来管理我们的代码。

如果你觉得某段代码,可能会出错,就可以让「代码保安」上岗了,用 try 来「盯着」它。

一旦有异常发生,则不会继续执行后面的程序,然后会跳到「保安室」也就是「except 子句|中执行「异常处理代码」。

当然,可以有多个保安室,分别处理不同类型的异常,但一次只会开一个保安室,因为程序都碰到异常了,后面的程序肯定不会再执行了。

最好,我们还能跟在公司里写邮件一样,反馈或处理完一个问题后,最后都做一个「统一的动作」,就是同步抄送给领导,这个动作可以放在 finally 语句块中实现。

当我们设置了 finally 后,程序无论是否发生异常,最终都会去执行一次 finally 语句块中的内容,我们经常会把各种关闭资源的动作,都放在这里来执行,以防会忘记。

案例代码:

try:
    print('代码保安,开始盯着程序了')
    num = 12 / 0
    print('执行完毕!num 的值是:', num)
except ZeroDivisionError as err:
    print('哦豁,完犊子,有异常了,已被拖进保安室:', err)
finally:
    print('今天是个好日子,又下班啦,程序有错没错,都抄送给老板吧')

最后

我是帅帅,一个默默做了 7 年的 Java 编程、架构师成长教练。

很喜欢罗曼·罗兰的一句话:“人最可贵之处在于看透生活的本质后,依然热爱生活 ”。

愿我们一起,努力追寻本质,依然保持热爱。

目录
相关文章
|
SQL 关系型数据库 MySQL
Python学习笔记361
Python 操作 MySQL 数据库
|
网络安全 Python