【Python学习】异常处理

异常处理

异常就是运行期间检测到的错误。计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。
Python标准异常

  1. BaseException:所有异常的基类
  2. Exception:常规异常的基类
  3. StandardError:所有的内建标准异常的基类
  4. ArithmeticError:所有数值计算异常的基类
  5. FloatingPointError:浮点计算异常
  6. OverflowError:数值运算超出最大限制
  7. ZeroDivisionError:除数为零
  8. AssertionError:断言语句(assert)失败
  9. AttributeError:尝试访问未知的对象属性
  10. EOFError:没有内建输入,到达EOF标记
  11. EnvironmentError:操作系统异常的基类
  12. IOError:输入/输出操作失败
  13. OSError:操作系统产生的异常(例如打开一个不存在的文件)
  14. WindowsError:系统调用失败
  15. ImportError:导入模块失败的时候
  16. KeyboardInterrupt:用户中断执行
  17. LookupError:无效数据查询的基类
  18. IndexError:索引超出序列的范围
  19. KeyError:字典中查找一个不存在的关键字
  20. MemoryError:内存溢出(可通过删除对象释放内存)
  21. NameError:尝试访问一个不存在的变量
  22. UnboundLocalError:访问未初始化的本地变量
  23. ReferenceError:弱引用试图访问已经垃圾回收了的对象
  24. RuntimeError:一般的运行时异常
  25. NotImplementedError:尚未实现的方法
  26. SyntaxError:语法错误导致的异常
  27. IndentationError:缩进错误导致的异常
  28. TabError:Tab和空格混用
  29. SystemError:一般的解释器系统异常
  30. TypeError:不同类型间的无效操作
  31. ValueError:传入无效的参数
  32. UnicodeError:Unicode相关的异常
  33. UnicodeDecodeError:Unicode解码时的异常
  34. UnicodeEncodeError:Unicode编码错误导致的异常
  35. UnicodeTranslateError:Unicode转换错误导致的异常

异常体系内部有层次关系,Python异常体系中的部分关系如下所示:
在这里插入图片描述
Pyhon标准警告
1、Warning:警告的基类
2、Deprecation Warning:关于被弃用的特征的警告
3、Futurn Warning:关于构造将来语义会有改变的警告
4、UserWarning:用户代码生成的警告
5、PendingDeprecationWarning:关于特性将会被废弃的警告
6、RuntimeWarning:可疑的运行时行为的警告
7、SyntaxWarning:可疑语法的警告
8、ImportWarning:用于在导入模块过程中触发的警告
9、UnicodeWarning:与Unicode相关的警告
10、BytesWarning:与字节或字节码相关的警告
11、ResourceWarning:与资源使用相关的警告

try - except语句

try:
	检测范围
except Exception[as reason]:
	出现异常后的处理代码

try - except - finally语句

try:
	检测范围
except Exception[as reason]:
	出现异常后的处理代码
finally:
	无论如何都会被执行的代码

不管try子句里面有没有发生异常,finally子句都会执行。
如果一个异常在try子句里被抛出,而又没有任何的except将他截住,那么这个异常会在finally子句执行后被抛出。

try - except - else语句

如果在try子句执行时没有发生异常,Python将执行else语句后的语句。

try:
	检测范围
except Exception[as reason]:
	出现异常后的处理代码
else:
如果没有异常执行这块代码

raise语句

Python使用raise语句抛出一个指定的异常。

# example
try:
	raise NameError('HiThere')
except NameError:
	print('An exception flew by!')

练习题

猜数字游戏:
电脑产生一个0到100之间的随机数字,然后让用户来猜。

num = random.randint(0,100)
print(num)
time = 1
isSuccess = False
while isSuccess is False:
    try:
        answer = int(input("第"+str(time)+"次猜,请输入一个整型数字:"))
    except ValueError:
        print("输入无效")
    else:
        if answer < num:
            print("太小")
        elif answer > num:
            print("太大")
        else:
            print("恭喜你猜到了这个数是:" + str(answer))
            isSuccess = True
        time = time + 1
'''
第1次猜,请输入一个整型数字:50
太大
第2次猜,请输入一个整型数字:25
太小
第3次猜,请输入一个整型数字:35
太小
第4次猜,请输入一个整型数字:40
太大
第5次猜,请输入一个整型数字:39
恭喜你猜到了这个数是:39
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值