python使用try语句捕获处理异常,python try输出异常
一、什么是异常?
异常是一个事件,它会在程序执行过程中发生,影响程序的正常执行。
一般来说,当Python不能正确处理程序时,就会出现异常。
是一个异常Python对象,表示有错误。
当Python脚本出现异常时,我们需要捕捉并处理,否则程序会终止执行。
常见异常
#AttributeError调用不存在的方法时引发的异常
# eofrerror遇到了在文件末尾引发的异常
#ImportError由导入模块时的错误导致的异常
#IndexError按超出界限的月份抛出列表异常
#IOErrorI/O操作导致的异常,如打开文件时出错。
#KeyError使用字典中不存在的关键字引发的异常
使用不存在的变量名引发了#NameError异常
#由#TabError语句块的不正确缩进引发的异常
#ValueError值引发的异常不在搜索列表中。
由零因子引起的# ZerodividionError异常二、基础异常处理
您可以使用try/except语句来捕获异常,如下例所示。
try/except语句用于检测try语句块中的错误,以便except语句可以捕获异常信息并对其进行处理。
如果你不想在异常发生时结束你的程序,只需在try中捕捉它。
try的工作原理是,当一个try语句启动时,python会在当前程序的上下文中对其进行标记,这样当出现异常时,它就可以回到这里。try子句(except等。和try是一个级别)先执行,接下来会发生什么取决于执行过程中是否出现异常。
如果在执行try之后的语句时出现异常,python会跳回到try并执行第一个与异常匹配的except子句。处理异常时,控制流会通过整个try语句(除非在处理异常时引发了新的异常)。
如果在try之后的语句中出现异常,但是没有匹配的except子句,那么该异常将被提交到上一级try或程序的顶部(这将结束程序并打印默认的错误信息)。
如果执行try子句时没有出现异常,python将在else语句之后执行该语句(如果有else的话),然后通过整个try语句控制流程。
最后,无论try是否抛出异常,都将执行该级别的相应try。
基础语法
尝试:
异常检测代码段except:
发生异常后执行代码段else:
最终执行代码段:时未出现异常。
例如,最后的执行代码段
打印(“测试1”)
尝试:
s=输入()
ifsisNone:
Print(s是空对象)
Print(len(s))#这个句子抛出一个异常
exceptTypeError:
打印(类型错误。空对象没有长度’)
else:
打印(无问题)
最后:
打印( endtest 1 )三、捕获异常的操作
为了捕捉异常,“except”语句必须抛出具有相同异常的类对象或字符串。
3.1使用除无任何例外类型。
您可以在没有任何异常类型的情况下使用except,如下例所示。try-except语句捕获以上述方式发生的所有异常。但这并不是一个好办法,我们也无法通过这个程序识别出具体的异常信息。因为它捕捉所有异常。
p
rint("test2")
try:
x=1
y=0
z=x/y
except:#捕获所有异常
print('thereisproblem')
else:
print('noproblem')
finally:
print('endtest2')使用except而带多种异常类型
你也可以使用相同的except语句来处理多个异常信息,这些异常将被放在一个括号里成为一个元组,如下所示:
try:正常的操作except(Exception1[,Exception2[,...ExceptionN]]]):
发生以上多个异常中的一个,执行这块代码else:
如果没有异常执行这块代码
print('test3')最后一个except子句可以忽略异常的名称,它将被当作通配符使用。你可以使用这种方法打印一个错误信息,然后再次把异常抛出。try:
x=1
y=0
z=x/y
except(NameError,ZeroDivisionError):
print("problemis(NameError,ZeroDivisionError)")
except(RuntimeError,TypeError):
print("problemis(RuntimeError,TypeError)")
except:
print("problem")
raise
else:
print("noproblem")
finally:
print('endtest3')
importsystry:
f=open('myfile.txt')
s=f.readline()
i=int(s.strip())
#exceptOSErroraserr:
#print("OSerror:{0}".format(err))
exceptValueError:
print("Couldnotconvertdatatoaninteger.")
except:
print("Unexpectederror:",sys.exc_info()[0])
foriinsys.exc_info():
print(i)
raiseException('linexxx')
finally:
print("end")
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。