鱼C论坛

 找回密码
 立即注册
查看: 1707|回复: 0

[技术交流] 章节八:异常处理

[复制链接]
发表于 2017-8-11 16:01:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
程序总会出现各种各样意想不到的错误异常。
当出错时程序最好以内部方式自我消化解决掉,这样可以提高用户体验。

我们可以使用try语句来处理异常
try except语句:把需要检测的代码放入try语句范围内,然后把处理异常的代码放入except语句范围内。如果要显示出异常原因就在except后面加上as。
用法:
try:
                检测范围
except Exception[as reason]:
                出现异常[Exception]后的处理代码
举例:
>>> try:
        open('不存在的文件.txt')
except OSError as reason:
        print('出错了,原因是:\n' + str(reason))

出错了,原因是:
[Errno 2] No such file or directory: '不存在的文件.txt'



try finally语句:如果在try范围内出现错误,则这个范围内异常地方后面的代码不会运行。如果不管有没有代码异常,想要执行某段代码,则要使用finally语句确保执行。
用法:
try:
                检测范围
except Exception[as reason]:
                出现异常[Exception]后的处理代码
finally:
                无论如何都会执行的代码

raise语句:要想主动引发异常,就需要用到raise语句。例如:
>>> raise NameError
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    raise NameError
NameError

&#8195;
丰富的else语句和简洁的with语句


else语句和if语句搭配构成要么怎样,要么不怎样的句式;
else语句和循环搭配构成干完了能怎样,干不完就别想怎样的句式。即循环完成就执行,循环没有完成就不执行。
else语句和异常搭配构成没有问题就干吧的句式。即没有异常出现就执行,出现异常不执行。

with语句:用with可以自动关闭打开的文档,免去因异常导致的文件没有关闭。举例:
try:
    file = open('My_File.txt','wt') # 当前文件夹中并不存在"My_File.txt"这个文件T_T
    file.write('写入成功')
    int('哈哈')
except ValueError as reason:
    print('出错啦:'+str(reason))
finally:
    file.close()

可改写成这样,省去自己关闭文件的麻烦:
try:
    with open('My_File.txt','wt') as file:
        file.write('写入成功')
        int('哈哈')
except ValueError as reason:
    print('出错啦:'+str(reason))





评分

参与人数 1鱼币 +6 收起 理由
小甲鱼 + 6 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 10:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表