python中try/except/finally关键字的使用

和JAVA语言一样,Python也用try关键字来处理异常。

为什么处理异常非常重要呢?主要原因很多操作只要‘尝试’了才知道会不会成功。比如,用python打开一个txt文件,并把txt文件中的字符串转换成整型数。

try的搭配通常有“try... except...”,也可以有"try...finally"等。我们先看"try...except...",

实验准备:

1. 一个txt文件,t1.txt,里面内容是"123":

123

2. 一个python脚本, try.py :

file_path = 't1.txt'
try:
    f = open(file_path, 'r')
    str_content = f.read()
    a = int(str_content)
    print(a)
except Exception:
    print('hh')

直接运行脚本,会发现except下面的print('hh')不会运行。因为txt文件中的内容正常(是数字型的字符串)。那么,如果把t1.txt中的内容换成:

abc

再运行try.py,会发现脚本只会输出'hh',说明代码汇报了异常。因为字符'abc'没办法用int()变成整型数字

到这里,一个最基本的异常处理实验就完成了。继续往下看,

如果t1.txt文件本就不存在呢? python脚本读取这个txt时,同样也会出现异常的,这是另一种异常。不修改上述脚本try.py中的代码运行,会发现还是会输出'hh',报告异常。但作为代码老司机,还是想区分这两种异常。那么,就需要代码汇报更细致一点,修改后如下:

file_path = 't1.txt'
try:
    f = open(file_path, 'r')
    str_content = f.read()
    a = int(str_content)
    print(a)
except ValueError:
    print(file_path + '中内容不可转化为数字!')
except FileNotFound:
    print(file_paht + '文件不存在!')
except Exception:
    print('未知错误!')

这样就麻溜儿处理了两种不同的异常。这里的except后面接的"ValueError"和"FileNotFound"关键字是怎么知道的呢?只需制造同样的异常,看console提示就行了

到这里,try...except...关键字就差不多了。我们再看看finally的用法:

file_path = 't1.txt'
try:
    f = open(file_path, 'r')
    str_content = f.read()
    a = int(str_content)
    print(a)
except Exception:
    print('未知错误!')
finally:
    print(file_path)

相比except而言,finally关键字简单多了,代表最后运行的代码。无论有没有异常,都会运行的代码块,我们就放到finally中。那么,上述代码就相当于:

file_path = 't1.txt'
try:
    f = open(file_path, 'r')
    str_content = f.read()
    a = int(str_content)
    print(a)
except Exception:
    print('未知错误!')
print(file_path)

官方描述为:

A finally clause is always executed before leaving the try statement, whether an exception has occurred or not.

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木盏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值