首页 > 代码库 > 【python之路32】python异常处理
【python之路32】python异常处理
一、捕获异常
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之路32】python异常处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。