python使用try语句捕获处理异常,python try输出异常

  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')

  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')

最后一个except子句可以忽略异常的名称,它将被当作通配符使用。你可以使用这种方法打印一个错误信息,然后再次把异常抛出。

  

importsys

  try:

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: