鱼C论坛

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

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

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

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

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

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

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

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




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


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


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


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

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


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






评分

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

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 06:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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