python学习之——try系列相关语句(try/except/else/finally)

1,try-except

a = b
print(b)
print("woaini")

由于b没有被定义,因此输出结果为
在这里插入图片描述
现在加入try-except:

try:
    a=b
    print(a)
except:
    print("error")
print("test")

结果输出为
在这里插入图片描述
因此try/except执行过程为:
(1)先执行try代码块, 发现了错误。
(2)执行except代码块。
(3)程序向下执行。
可是在try中发现异常之前的部分会被执行吗?

try:
    print("v587")
    a=b
    print(a)
except:
    print("error")
print("test")

输出结果为
在这里插入图片描述
由此可知,在发现异常之前的语句是会正常运行的。
我们经常见的两个系统报错为:SyntaxError和NameError
在try/except语句中,可以使用多个except语句
例如:

try:
    print("v587")
    a=b
    print(a)
except SyntaxError:
    print("<<<)
except NameError:
    print("<<<)
print("test")

输出结果为:
在这里插入图片描述
可见,当try代码块执行出现异常,在except中匹配到了NameError的异常,则执行了对应except的语句。
若所有except都没有匹配,则相当于try/except语句不存在。
2,try-except-else

在该语句中,try中如果有异常,else是不执行的,例如:

try:
    print("v587")
    a=b
    print(a)
except SyntaxError:
    print("<<<)
except SystemError:
    print("<<<)
except:
    print("bushinaliangzhongcuowu")
else:
    print("hahaha")
print("test")

输出为:
在这里插入图片描述
如果没有出现异常时,例如:

try:
    print("v587")
    b=1;
    a=b
    print(a)
except SyntaxError:
    print("<<<)
except SystemError:
    print("<<<)
except:
    print("bushinaliangzhongcuowu")
else:
    print("hahaha")
print("test")

此时except不输出,else输出,如图:

在这里插入图片描述
3,try/finally
无论try语句是否有异常,最后都要执行的代码。
例如:

try:
    print("v587")
    a=b
    print(a)
except SyntaxError:
    print("<<<)
else:
    print("hahaha")
finally:
    print("meiyoule!!")
print("test")

输出结果为:
python学习之——try系列相关语句(try/except/else/finally)_第1张图片
仅限运行完整套语句后结束,,可以看到最后的print并没有执行。

你可能感兴趣的:(python学习之——try系列相关语句(try/except/else/finally))