首页 > 编程知识 正文

致 Python 初学者(python抛出异常的关键字)

时间:2023-05-06 02:03:18 阅读:77396 作者:3749

Python改变生活,科技改变世界

摘要:作为Python初学者,刚学习Python编程时,通常会收到一些错误信息。 本文介绍了Python的异常处理。

异常

广义错误分为错误和异常错误,是指可以人为避免异常,在语法逻辑正确的前提下,出现的问题在python中,异常是类,可以处理和使用异常的分类

BaseException的所有异常基类

Exception常见错误的基类

ArithmeticError中所有数字计算错误的基类

警告的基类

资产错误断言语句(资产)失败

属性错误器试图访问未知的对象属性

删除已弃用特征警告

EOFError用户输入文件末尾标志eof(ctrld ) )。

浮点计算错误

FutureWarning警告结构将来意义会发生变化

调用GeneratorExit generator.close ()方法时

ImportError导入模块失败时

索引不在序列范围内

在KeyError词典中查找不存在的关键字

keyboard中断用户输入中断键(Ctrl c ) )。

内存错误内存溢出(可以通过删除对象释放内存)。

NamerError试图访问不存在的变量

NotImplementedError尚未实现的方法

操作系统错误操作系统发生的异常(例如,打开不存在的文件)

溢出错误的数值运算超过了最大限制

OverflowWarning自动升级为旧长整型警告

PendingDeprecationWarning特征被遗弃的警告

“引用错误弱引用”(weak reference )尝试访问通过垃圾回收机制回收的对象

运行时错误常见运行时错误

运行时警告可疑执行行为(runtime behavior )警告

停止迭代没有更多的值

SyntaxError Python语法错误

同步警告可疑语法警告

缩进错误

将TabError Tab与空格混合使用

系统错误python编译器系统错误

系统退出python编译器进程已停止

类型之间的操作无效

UnboundLocalError访问未初始化的局部变量(NameError的子类)

UnicodeError Unicode相关错误(ValueError子类)

UnicodeEncodeError Unicode编码时出错(UnicodeError子类) )。

解码UnicodeDecodeError Unicode时出错(UnicodeError的子类) ) )。

用户警告用户代码生成警告

值错误器传递无效的参数

ZeroDivisionError除数为零

l=[ 1,2,3,4,5 ]

#零除法错误

num=int (input (pleaseinputyournum : ) )

打印(100/num )。

Please input your num: 0

------------- -请参阅

zerodivisionerrortraceback (mostrecentcalllast )。

ipython-input-1-8 abb 196 ce2aainmodule

2 #零除法错误

3 num=int (input (pleaseinputyournum : ) )

----4打印(100/num )。

zerodivisionerror 3360 divisionbyzero

异常处理

虽然不能保证程序永远正常运行,但必须确保最坏情况下出现的问题能够正确管理python异常处理模块的所有语法。

try:

如果想要实现某个操作,

如果没有异常,任务就能完成

如果发生异常,则从当前代码块中抛出异常以尝试解决异常

except异常类型1 :

解决方法1 :在此尝试处理异常解决问题

except异常类型2 :

解决方法2 :此处用于尝试处理异常解决问题

except (异常类型1、异常类型2 . ) :

解决方案:对象

多个异常使用相同的处理方式 except: 如果没有出现任何异常,将会执行此处代码 finally: 有没有异常都要执行的代码

流程

执行try下面的语句 如果出现异常,则在except语句里查找对应异常病进行处理 如果没有出现异常,则执行else语句内容 最后,不管是否出现异常,都要执行finally语句除except(最少一个)以外,else和finally可选# 简单异常案例 try: num = int(input("Please input your number:")) rst = 100/num print("计算结果是:{}".format(rst)) except: print("输入错误") # exit是退出程序的意思 exit()

Please input your number:0 输入错误

# 简单异常案例 # 给出提示信息 try: num = int(input("Please input your number:")) rst = 100/num print("计算结果是:{}".format(rst)) # 捕获异常后,把异常实例化,出错信息会在实例里 # 注意以下写法 # 以下语句是捕获ZeroDivisionError异常并实例化实例e except ZeroDivisionError as e: print("输入错误") print(e) # exit是退出程序的意思 exit()

# 简单异常案例 # 给出提示信息 try: num = int(input("Please input your number:")) rst = 100/num print("计算结果是:{}".format(rst)) # 如果是多种error的情况 # 需要把越具体的错误,越往前放 # 在异常类继承关系中,越是子类的异常,越要往前放, # 越是父类的异常,越要往后放 、 # 在处理异常的时候,一旦拦截到某一个异常,则不再继续往下查看,直接进行下一个 # 代码,即有finally则执行finally语句,否则就执行下一个大的语句 except ZeroDivisionError as e: print("输入错误") print(e) # exit是退出程序的意思 exit() except NameError as e: print("名字起错了") print(e) except AttributeError as e: print("属性错误") print(e) exit() # 常见错误的基类 # 如果写下面这句话,常见异常都会拦截住 # 而且下面这句话一定是最后一个excepttion except Exception as e: print("我也不知道就出错了") print(e) except ValueError as e: print("NO>>>>>>>>>>>") print("hahaha")

Please input your number:ffff 我也不知道就出错了 invalid literal for int() with base 10: 'ffff' hahaha

用户手动引发异常

当某些情况,用户希望自己引发一个异常的时候,可以使用raise 关键字来引发异常# raise 案例 try: print("I love you") print(3.1415926) # 手动引发一个异常 # 注意语法:raise ErrorClassName raise ValueError print("还没完呀") except NameError as e: print("NameError") except ValueError as e: print("ValueError") except Exception as e: print("有异常") finally: print("我肯定会被执行的")

I love you 3.1415926 ValueError 我肯定会被执行的

# raise 案例-2 # 自定义异常 # 需要注意:自定义异常必须是系统异常的子类 class DanaValueError(ValueError): pass try: print("I love you") print(3.1415926) # 手动引发一个异常 # 注意语法:raise ErrorClassName raise DanaValueError print("还没完呀") except NameError as e: print("NameError") # except DanaValueError as e: # print("DanaError") except ValueError as e: print("ValueError") except Exception as e: print("有异常") finally: print("我肯定会被执行的")

I love you 3.1415926 ValueError 我肯定会被执行的

# else语句案例 try: num = int(input("Please input your number:")) rst = 100/num print("计算结果是:{}".format(rst)) except Exception as e: print("Exceptiong") else: print("No Exception") finally: print("反正我会被执行")

Please input your number:0 Exceptiong 反正我会被执行

关于自定义异常

只要是raise异常,则推荐自定义异常在自定义异常的时候,一般包含以下内容:

自定义发生异常的异常代码

自定义发生异常后的问题提示

自定义发生异常的行数

最终的目的是,一旦发生异常,方便程序员快速定位错误现场

本文整理自华为云社区《一文集结 python 异常处理》,原文作者:ruochen。

这也是我自己长期收藏在收藏夹内的内容,非常实用。你还想看哪方面的内容呢,欢迎在下方留言,下期内容可能就是你的留言所需哦!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。