Python try用法
try语句是Python中处理异常的重要语句,它工作于异常出现时对程序进行处理,使程序能继续运行而不是完全停止。正确使用try语句是编写可靠 Python 程序的关键。

try(尝试)和except
try代码块中编写可能发生异常的代码,如果在执行try块时发生了异常,那么try块余下的代码将不会继续执行,而是直接跳转至except代码块,except块会捕获异常,执行except块中的代码。

通过这个机制,我们可以处理try块中的异常,让程序不会因异常而终止。

try:
    n += 1145 #假设这个会报错,导致引发异常
    print(n)
except: # 引发异常后,会执行以下代码
    n = 0
    n += 1
    print(n)

在上例中使用except块进行了简单的异常处理。但是实际上except能做的更多。

在Python编程中,except关键字用于异常处理,它通常与try语句一起使用。try块中的代码可能会引发异常,而except块则定义了当异常发生时应该采取的措施。except可以用来捕获特定类型的异常,也可以捕获所有类型的异常。如果没有指定异常类型,except将捕获所有异常。

except关键字的常见用法场景

捕获特定异常:可以在except后面指定异常类型,这样只有当发生该类型的异常时,相应的处理代码才会被执行。
捕获所有异常:如果省略了except后面的异常类型,或者使用except:,它将捕获所有异常。
多重异常处理:可以在单个except块中列出多个异常类型,用逗号分隔,这样当发生这些异常中的任意一个时,都会执行该块中的代码。
异常绑定:可以在except后面使用as关键字来绑定异常对象到一个变量,这样就可以在异常处理代码中访问异常的详细信息。

示例代码

try:
    # 可能会引发异常的代码
    result = 10 / 0
except ZeroDivisionError:
    # 处理除以零的异常
    print("除数不能为零!")
except Exception as e:
    # 处理其他类型的异常,并打印异常信息
    print("发生了一个异常:", e)
else:
    # 如果try块中的代码没有引发异常,则执行else块中的代码
    print("操作成功!")
finally:
    # finally块中的代码总是会执行,用于执行清理工作
    print("终于结束了!")

在上述代码中,首先尝试执行除法操作,如果发生ZeroDivisionError异常,则打印一条错误信息。接着,使用except Exception as e捕获其他类型的异常,并打印异常信息。else块在没有异常发生时执行,而finally块确保即使发生异常也会执行清理代码。

最佳实践和注意事项

尽可能具体地捕获异常,避免使用通用的except:,这样可以更准确地处理错误情况。
使用finally块来执行清理工作,如关闭文件或释放资源,确保程序的健壮性。
结合使用assert语句进行调试,它可以在开发阶段帮助检测程序中的逻辑错误。
考虑使用异常链(raise ... from ...语法)来保留原始异常信息,以便于调试。