Python try...except



  • Python Try Except

    try块使您可以测试代码块是否存在错误。
    except块使您可以处理错误。
    finally块使您可以执行代码,而不管try-except块的结果如何。
  • 异常处理

    当发生错误或异常时,Python通常会停止并生成错误消息。这些异常可以使用以下try语句处理:
    try块将生成一个异常,因为x未定义:
    try:
      print(x)
    except:
      print("An exception occurred")
    
    
    由于try块引发错误,因此将执行except块。如果没有try块,程序将崩溃并引发错误:
    try块将生成一个异常,因为x未定义:
    print(x)
    
    
  • 多个异常

    您可以定义任意数量的异常块,例如,如果您要为特殊类型的错误执行特殊代码块:
    如果try块引发一个NameError 错误,则打印一条消息,而其他错误则打印另一条消息:
    try:
      print(x)
    except NameError:
      print("Variable x is not defined")
    except:
      print("Something else went wrong")
    
    
  • else

    如果未引发错误,则可以使用else关键字定义要执行的代码块:
    在此示例中,try块不会产生任何错误:
    try:
      print("Hello")
    except:
      print("Something went wrong")
    else:
      print("Nothing went wrong")
    
    
  • finally

    如果指定了finally块,则无论try块是否引发错误,都将执行该块。
    在此示例中,try块不会产生任何错误:
    try:
      print(x)
    except:
      print("Something went wrong")
    finally:
      print("The 'try except' is finished")
    
    
    这对于关闭对象和清理资源很有用:
    在此示例中,try块不会产生任何错误:
    try:
      f = open("demofile.txt")  #打开文件
      f.write("Lorum Ipsum")    #写入文件
    except: #异常处理
      print("Something went wrong when writing to the file")
    finally: 
      f.close()  # 关闭文件
    
    
    程序可以继续运行,打开的文件对象已经被关闭。
  • 引发异常

    作为Python开发人员,您可以选择在条件发生时引发异常。要抛出(或引发)异常,请使用raise关键字。
    如果x小于0,则引发错误并停止程序:
    x = -1
    
    if x < 0:
      raise Exception("Sorry, no numbers below zero")
    
    
    raise关键字用于抛出异常。您可以定义引发哪种错误,以及向用户显示文本。
    如果x不是整数,则引发TypeError
    x = "hello"
    
    if not type(x) is int:
      raise TypeError("Only integers are allowed")