Python - try-finally 块


您可以将finally : 块与try : 块一起使用。finally : 块是放置任何必须执行的代码的地方,无论 try 块是否引发异常

try-finally语句的语法是这样的 -

try: You do your operations here; ...................... Due to any exception, this may be skipped. finally: This would always be executed. ......................

注意- 您可以提供 except 子句或finally 子句,但不能同时提供两者。else 子句不能与finally 子句一起使用。

例子

try: fh = open("testfile", "w") fh.write("This is my test file for exception handling!!") finally: print ("Error: can\'t find file or read data") fh.close()

如果您没有权限以写入模式打开文件,那么它将产生以下输出-

Error: can't find file or read data

相同的示例可以写得更简洁,如下所示 -

try: fh = open("testfile", "w") try: fh.write("This is my test file for exception handling!!") finally: print ("Going to close the file") fh.close() except IOError: print ("Error: can\'t find file or read data")

当try块中抛出异常时,执行立即传递到finally块。执行完finally块中的所有语句后,异常将再次引发,并且如果出现在try-except语句的下一个更高层中,则在 except 语句中进行处理。

带参数的异常

异常可以有一个参数,该参数是提供有关问题的附加信息的值。参数的内容因例外情况而异。您可以通过在 except 子句中提供变量来捕获异常的参数,如下所示 -

try: You do your operations here ...................... except ExceptionType as Argument: You can print value of Argument here...

如果编写代码来处理单个异常,则可以在 except 语句中在异常名称后面添加一个变量。如果要捕获多个异常,则可以在异常元组后面添加一个变量。

该变量接收异常值,主要包含异常原因。该变量可以接收单个值或元组形式的多个值。该元组通常包含错误字符串、错误编号和错误位置。

例子

以下是单个异常的示例 -

# Define a function here. def temp_convert(var): try: return int(var) except ValueError as Argument: print("The argument does not contain numbers\n",Argument) # Call above function here. temp_convert("xyz")

它将产生以下输出-

The argument does not contain numbers
invalid literal for int() with base 10: 'xyz'