一、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类型的异常并抛出。