Python异常处理指南:掌握try/except语句,防止程序意外终止
Python中程序异常都能被处理吗?
“Exception”是一个代表错误的Python对象。
如果不希望程序在异常发生后自动终止,程序员必须主动捕获异常并进行相应的处理。
要捕获异常,可以使用try/except语句。
try/except语句用于检测try语句块中的错误,以便except语句捕获异常信息并进行处理。
下面是一个try/except示例,说明如何处理各种异常:
try:
except
except
否则:
预定义了各种标准Python异常。
基本上,这包括常见的异常情况,包括以下几种。
异常名称描述
BaseException所有异常的基类
SystemExit解释器请求退出
KeyboardInterrupt用户中断执行(通常通过输入^C)
Exception一般错误的基类
StopIteration迭代器不是还有更多的价值
GeneratorExit生成器发生异常通知退出
StandardError所有内置标准异常基类
ArithmeticError所有值计算错误的基类
FloatingPointError浮点计算错误
OverflowError数值运算超出最大限制
ZeroDivisionError零除(或取模)(所有数据类型)
AssertionError断言语句失败
AttributeError对象不具有此属性
EOFError无内置条目,已达到EOF标记
EnvironmentError操作系统错误的基类
IOErr或输入/输出操作失败
OSError操作系统错误
WindowsError系统调用失败
ImportError无法导入模块/对象
LookupError数据查询基类无效
IndexErrorIt序列中没有这样的索引
KeyError映射中没有这样的键
MemoryError内存溢出错误(对Python解释器来说不是致命的)
NameError未声明/初始化的对象(无属性)
UnboundLocalError访问未初始化的局部变量
>ReferenceError弱引用试图访问已检索的对象
运行时错误一般运行时错误
NotImplementedError方法尚未实现
SyntaxErrorPython语法错误
IndentationError缩进错误
TabError制表符和混合空格
SystemError一般解释器系统错误
TypeError对类型的操作无效
ValueError传递无效参数
UnicodeError与Unicode相关的错误
UnicodeDecodeErrorUnicode解码错误
UnicodeEncodeErrorUnicode编码错误
UnicodeTranslateErrorUnicod转换错误
Warning警告基类
DeprecationWarning有关已弃用功能的警告
FutureWarning有关将在以下版本中更改的构造语义的警告未来
OverflowWarning有关促销的旧警告自动长(长)
PendingDeprecationWarning 关于将被弃用的功能的警告
RuntimeWarning可疑运行时行为(runtimebehavior)的警告
SyntaxWarning语法警告可疑
UserWarning代码生成的用户警告
Python系统通过发出提示并停止来处理异常操作。
我不想停下来,我只能自己处理。
没有类型,所有异常都执行同一组指令:
try:正常操作except:发生异常,执行这段代码否则:ifExecute这段代码没有异常
也可以有几个异常经常分享一段代码:
ry:正常运行except(Exception1[,Exception2[,...ExceptionN]]]):上述异常之一发生,否则运行此代码:如果运行此代码没有异常块代码
还有一种可以有尾随部分的格式:
try:fh=open("testfile","w")try:fh.write("这是一个测试文件,用于测试是否有异常!!")Final:print"关闭文件"fh.close()exceptIOError:print"错误:文件未找到或失败读取文件”
当try块中抛出异常时,立即执行final块中的代码。
执行完final块中的所有指令后,再次引发异常并执行except块中的代码。
参数内容与异常不同。
除了标准异常之外,我们还可以自己定义异常并进行处理。
在本例中,我们使用raise语句:
raise[Exception[,args[,traceback]]]</在p>
语句中,Exception是'exception(例如NameError)和标准异常参数,args是自己提供的异常参数。
最后一个参数是可选的(在实践中很少使用),如果存在,则为跟踪异常对象。
相应的异常处理程序的例子有:
try:普通语句,包括raise
exceptException,err:引发自定义异常
else:其余代码
Python异常处理知识点汇总,五分钟就能学会
什么是异常?
1.错误
从软件的角度来看,错误是语法错误或逻辑错误。
该错误是语法或逻辑错误。
语法错误表示软件中存在无法被解释器解释或无法被编译器编译的结构错误。
这些错误必须在程序执行之前纠正。
当程序的语法正确时,剩下的就是逻辑错误。
逻辑错误可能是由于输入不完整或非法造成的;
在其他情况下,可能是逻辑无法生成、计算,或者输出结果所需的过程无法执行。
这些误差通常分别称为域误差和范围误差。
当Python检测到错误时,Python解释器会指示当前流无法继续执行。
这时出现了异常。
2.异常
对异常的最好描述是:它是由于程序中出现错误而在正常控制流之外采取的操作。
此行为分为两个阶段:首先是导致异常的错误,然后是检测(以及可能采取的措施)阶段。
第一阶段发生在异常情况(有时称为异常情况)发生后。
每当检测到错误并识别出异常情况时,解释器都会引发异常。
启动也可以称为触发、抛出或生成。
解释器使用它来通知当前控制流发生了错误。
Python还允许程序员自己抛出异常。
无论是由Python解释器还是程序员引起的,异常都是发生错误的信号。
当前流将被中断以处理此错误并采取适当的操作。
这是第二阶段。
异常处理发生在第二阶段。
引发异常后,可以调用许多不同的操作。
这可以通过忽略错误(记录错误但不采取任何操作,采取补救措施然后终止程序。
)或通过缓解问题并尝试继续执行来完成。
所有这些操作都代表控制的延续或分支。
关键是程序员可以指示程序发生错误时如何执行。
Python使用异常对象来表示异常。
当遇到错误时,会抛出异常。
如果异常对象未被处或捕获,程序将使用所谓的回溯终止执行。
异常处理
要捕获异常,您可以可以使用try/except语句。
try/except语句用于检测try语句块中的错误,以便except语句捕获异常信息并进行处理。
如果你不想在发生异常时结束程序,只需在try中捕获它即可。
语法:
下面是简单的try....except...else的语法:
Try的工作原理是,当启动时在try语句之后,Python会标记当前程序的上下文,以便在发生异常时可以返回这里。
首先执行try子句,接下来发生什么取决于执行过程中是否发生异常。
如果执行try之后的语句时出现异常,python会跳回try并执行第一个匹配异常的except子句。
异常处理完毕后,控制流会经过整个try语句(除非处理异常时抛出了新的异常)。
如果try后面的语句发生异常,但没有匹配的except子句,则该异常会提交到上层try,或者提交到程序的顶层(这会结束程序并打印错误省错误消息)。
如果没有当执行try子句时出现异常,Python会执行else语句之后的语句(如果有else),然后控制流会遍历整个try语句。
使用except而不带任何异常类型
您可以使用except而不带任何异常类型,如下例所示:
上面的try-except语句捕获所有出现的异常。
但这并不是一个好办法,我们无法通过这个程序来识别具体的异常信息。
因为它捕获了所有异常。