一、try-except语句

try-except语句是Python语言中用于异常处理的标准语句,在程序执行过程中出现异常时,会优先匹配try-except语句中的except部分,从而避免程序崩溃。语法格式如下:

try:
    # 可能会出现异常的语句
except ExceptionType[, ExceptionType]:
    # 异常处理语句

其中,try块中的语句为可能会出现异常的语句,如果没有出现异常,则跳过except块中的语句,执行try-except语句后面的语句。

如果出现了指定的异常(ExceptionType),则跳转到对应的except块,执行其中的语句。如果没有指定异常类型,则对所有类型的异常进行捕获和处理。

二、try-finally语句

try-finally语句也是Python语言中用于异常处理的标准语句,常用于保证一些代码无论是否引起异常都能得到执行,例如关闭文件、释放锁等。

语法格式如下:

try:
    # 可能会出现异常的语句
finally:
    # 无论是否出现异常都会执行的语句

无论try块中语句是否引发了异常,finally块中的语句都会被执行,可以用于释放资源等工作。

三、try-except-finally语句

try-except-finally语句是try-except和try-finally的组合体,可以同时处理异常并执行必须的清理工作。

语法格式如下:

try:
    # 可能会出现异常的语句
except ExceptionType[, ExceptionType]:
    # 异常处理语句
finally:
    # 无论是否出现异常都会执行的语句

其中,try块中的语句可能会引发异常,如果出现了指定的异常(ExceptionType),则跳转到对应的except块,执行其中的语句。如果没有指定异常类型,则对所有类型的异常进行捕获和处理。

最后,不管try和except块中的语句有无引发异常,finally块中的语句都会被执行,可以用于释放资源等工作。

四、多层try-except语句

在Python中,可以嵌套多层try-except语句,进行更加细致的异常处理。

例如:

try:
    do_something()
except ExceptionType1:
    try:
        do_something_else()
    except ExceptionType2:
        handle_error()
except ExceptionType3:
    handle_another_error()

此时,如果在do_something()中引发了ExceptionType1类型的异常,程序会跳转到第一个except块中,执行其中的语句;如果在do_something_else()中引发了ExceptionType2类型的异常,程序会跳转到第二个except块中,执行其中的语句。

五、自定义异常

Python中也可以通过继承内置的Exception类或其子类来自定义异常。

例如:

class MyException(Exception):
    pass

然后在代码中就可以使用raise关键字来抛出这个自定义异常。

例如:

try:
    do_something()
except Exception as e:
    raise MyException("An error occurred: {}".format(e))

此时,如果在do_something()中引发了异常,会被转化为MyException类型的异常并抛出。