QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

鱼友Ⅱ

Rank: 3

积分
274
查看: 89|回复: 0

[学习笔记] 《零基础学习Python》33异常处理:你不可能总是对的2(try-except-finally)

[复制链接]
最佳答案
1 
累计签到:134 天
连续签到:2 天
只为 发表于 2017-9-10 13:32:48 890 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

x
1、如何检测异常并处理
异常检测:try

1)try-except语句:
try:
检测范围
except Exception[as reason]:
出现异常(Exception)后的处理代码

  1. try:
  2.         int('abc')
  3.         sum = 1 + '1'
  4.         f = open('c:\\a.txt')
  5.         print(f.read())
  6.         f.close()
  7. except OSError as error:
  8.         print('文件出错了\n错误的原因是 %s' % str(error))
  9. except TypeError as error:
  10.          print('类型出错了\n错误的原因是 %s' % str(error))
  11. except:
  12.         print('出错了')
复制代码


文件出错了
错误的原因是 [Errno 2] No such file or directory: 'c:\\a.txt'

注:一个try可与多个except搭配使用;不推荐使用except包含所有的except;一旦出现异常,后面的代码不会执行;也可以把多个异常写在一起,如下:
  1. try:
  2.         int('abc')
  3.         sum = 1 + '1'
  4.         f = open('c:\\a.txt')
  5.         print(f.read())
  6.         f.close()
  7. except (OSError,TypeError):
  8.         print('出错了')
复制代码


2)try-finally语句
try:
检测范围
except Exception[as reason]:
出现异常(Exception)后的处理代码
finally:
无论如何都会被执行的代码
注:一般都把file.close()写到finally中

2、raise语句
1)
  1. >>> raise
  2. Traceback (most recent call last):
  3.   File "<pyshell#0>", line 1, in <module>
  4.     raise
  5. RuntimeError: No active exception to reraise
复制代码

2)
  1. >>> raise ZeroDivisionError
  2. Traceback (most recent call last):
  3.   File "<pyshell#2>", line 1, in <module>
  4.     raise ZeroDivisionError
  5. ZeroDivisionError
  6. >>> raise ZeroDivisionError('除数为零的异常')
  7. Traceback (most recent call last):
  8.   File "<pyshell#3>", line 1, in <module>
  9.     raise ZeroDivisionError('除数为零的异常')
  10. ZeroDivisionError: 除数为零的异常
复制代码

Q:如何自定义异常,并抛出自定义异常?

本帖被以下淘专辑推荐:

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
楼层
跳转到指定楼层

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /3 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-11-21 23:28

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