python之路32python异常处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之路32python异常处理相关的知识,希望对你有一定的参考价值。
一、捕获异常
1、try except
#!usr/bin/env python # -*- coding:utf-8 -*- num = input("请输入一个数字:") try: int_num = int(num) + 100 print(int_num) except: print("您输入的不是数字")
2、捕获具体的错误信息
try except Exception as e
#!usr/bin/env python # -*- coding:utf-8 -*- num = input("请输入一个数字:") try: int_num = int(num) + 100 print(int_num) except Exception as e: #Exception类所有异常都能捕获,是所有异常类的基类 print(e)
3、捕获多个异常
#!usr/bin/env python # -*- coding:utf-8 -*- num = input("请输入一个数字:") try: int_num = int(num) + 100 print(int_num) except ValueError as e: #只捕获ValueError类型,捕获到后后面的except代码不再运行 print("发生ValueError") except IndexError as e: #只捕获IndexError类型,捕获到后后面的except代码不再运行 print("发生IndexError") except Exception as e: #捕获所有异常类型 print("发生Exception")
4、完整的异常结构
#!usr/bin/env python # -*- coding:utf-8 -*- try: #要捕获异常的代码语句 pass except ValueError as e: #如果捕获到ValueError异常则执行本代码块 print(e) except Exception as e: #如果发生错误ValueError没有捕获到,则执行代码块 print(e) else: #如果try下的代码块没有异常则执行该代码块 print("未发生异常") finally: #不管发布发生错误都会执行该代码块 print("end")
5、可以自己抛出异常信息
#!usr/bin/env python # -*- coding:utf-8 -*- input_num = input("请输入一个大于0数字:") try: if int(input_num) <= 0: raise Exception("数字不能小于等于0") #创建一个Exception对象 except Exception as e: print(e)
上面代码中e为Exception的对象,print(e)为什么能打印出文本呢,其原理是利用__str__(self)特殊方法的:
#!usr/bin/env python # -*- coding:utf-8 -*- class Foo: def __init__(self,ef): self.ef = ef def __str__(self): return self.ef exception = Foo(‘出错了。。。。‘) print(exception) #出错了。。。。,实际调用的是__str__(self)方法
6、断言
一般用于测试,assert 条件 ,如果条件成立执行,条件不成立直接抛出异常
#!usr/bin/env python # -*- coding:utf-8 -*- assert 2 == 2 assert 1 > 2 #因为条件不成立所以会直接抛异常
以上是关于python之路32python异常处理的主要内容,如果未能解决你的问题,请参考以下文章
python 模块之路 异常处理基础 异常处理其他 报错处理