从上一节可以知道,try except 中的 except 语句是代码块发生异常时的处理代码。如果希望代码块没有发生异常时去做一些事情,此时该怎么办呢?实际上,Python 为我们提供了 else 子句来实现该功能,也就是 try...except...else。
语法:
try:
……
except 具体异常类型as reason:
……
else:
……说明:
当程序没有发生异常时,通过添加一个 else 子句做一些事情(比如输出一些信息)很有用,可以帮助我们更好地判断程序的执行情况。
从之前的学习可以知道,else 子句不仅可以跟 if、while 等语句搭配,还可以跟 try 语句搭配。
示例: else 子句的基本用法
try:
a = 1
print(a)
except NameError:
print('变量不存在!')
else:
print('程序正常运行!')运行结果如下。
1
程序正常运行!分析:
可能有些小伙伴会好奇,上面的例子如果改写成下面这样,效果不是完全一样吗?
try:
a = 1
print(a)
print('程序正常运行!') # 直接放在 try 里面
except NameError:
print('变量不存在!')对于这种简单例子来说,效果确实是一样的。但在实际开发中,我们有一个极其重要的原则:try 块里面的代码应该越少越好,只放那些真正有可能出错的代码。
- 如果放在 try 里面:这段新增的代码如果自己发生了异常,也会被下面的 except 意外捕获,这会隐藏掉真正的 Bug。
- 如果放在 else 里面:else 里的代码是不受前面 except 保护的。这也就意味着,只有当 try 里的危险代码安全通过后,才会放心地执行 else 里的后续逻辑。这让代码的职责更加明确,排错也更容易。
