异常处理块

python 支持异常处理,使用 try 块进行异常处理,异常抛出和捕获的进制和 Java 的 try-catch-finally 块很相似,语法如下:

try:
    <statement>
except ErrorType:
    <handle error statement>
finally:
    <statement>

异常处理机制如下:

以下是一个示例:

import sys

try:
    f = open('test.log')
    s = f.readline()
    i = int(s.strip())
except OSError as err:
    print("OS error: {0}".format(err))
except ValueError:
    print("Could not convert data to an integer.")
    raise
finally:
    f.close()

手动抛出异常

python 同样支持像 Java throw 语句一样手动抛出异常,使用 raise 关键字,示例如下:

try:
    raise ValueError("This is a raised error")
except ValueError as err:
    print(format(err))
    
print("out of try code")
# 输出:
# This is a raised error
# out of try code

可以看到异常代码中,try-excpect 捕获到异常后,仍然会继续执行接下来 try-expect 块之外的代码,如果此时需要实现像 Java 类似的异常机制,在捕获到某个异常后强行终止程序执行,并在标准输出打印异常信息,可以在 except 块中加入 raise 语句,如下:

try:
    raise ValueError("This is a raised error")
except ValueError as err:
    print(format(err))
    raise

print("out of try code")

# 输出
'''
Traceback (most recent call last):
  File "C:/Al-assad/workplace/workplace-pycharm/pythonTest/test11.py", line 2, in <module>
    raise ValueError("This is a raised error")
ValueError: This is a raised error
This is a raised error
'''