Python异常捕获和处理语句 try-except-else-finally

简介: Python异常捕获和处理语句 try-except-else-finally

try-except-finally语句

在Python中,try-except-finally语句块主要用于处理异常(错误),它有多种用法来增强代码的健壮性和可读性。try语句通常与except、else和finally子句一起使用。

下面是try语句的一些常见用法:

1. 基本用法

尝试执行一段代码,如果发生异常,则跳转到指定的异常处理代码。

try:  

   # 尝试执行的代码块  

except ExceptionType:  

   # 如果在try代码块中引发了'ExceptionType'异常,则执行此代码块

2. 多个异常处理

try:  

   # 尝试执行的代码块  

except (ExceptionType1, ExceptionType2):  

   # 如果在try代码块中引发了'ExceptionType1'或'ExceptionType2'异常,则执行此代码块

3. 处理所有其他异常

try:  

   # 尝试执行的代码块  

except:  

   # 如果在try代码块中引发了任何异常,则执行此代码块

4. 多个except子句

可以为每个异常类型编写一个单独的except子句。这样可以使代码更清晰,易于阅读和维护。

try:  

   # 尝试执行的代码块  

except ExceptionType1:  

   # 如果在try代码块中引发了'ExceptionType1'异常,则执行此代码块  

except ExceptionType2:  

   # 如果在try代码块中引发了'ExceptionType2'异常,则执行此代码块

5. 使用else子句

如果try代码块成功执行,没有引发任何异常,则执行else子句中的代码。

try:  

   # 尝试执行的代码块  

except ExceptionType:  

   # 如果在try代码块中引发了'ExceptionType'异常,则执行此代码块  

else:  

   # 如果try代码块成功执行,则执行此代码块

6. 使用finally子句

无论是否引发异常,finally子句中的代码都会被执行。通常用于资源的清理操作。

try:  

   # 尝试执行的代码块  

except ExceptionType:  

   # 如果在try代码块中引发了'ExceptionType'异常,则执行此代码块  

finally:  

   # 不论是否引发异常,都将执行此代码块

7. 使用as关键字

try-except as-else-finally

try:

   # 尝试执行的代码

except ExceptionType as e:

   # 发生指定类型的异常时执行的代码,e为异常对象

else:

   # 没有发生异常时执行的代码

finally:

   # 无论是否发生异常,都会执行的代码


实例

多看几个实例,轻松学会try语句:

例1

try:
    # 尝试执行可能抛出异常的代码
    f = open('filename.txt')
    content = f.read()
except IOError as e:
    # 当发生IOError异常时,执行此代码块
    print(f"无法打开文件:{e}")
finally:
    # 不论是否发生异常,都会执行此代码块
    if 'f' in locals():
        f.close()

例2

try:
    # 尝试执行代码
    value = 1 / 0
except (ZeroDivisionError, TypeError) as e:
    # 可以同时处理多种类型的异常
    print(f"发生了一个错误:{type(e).__name__} - {e}")

例3

try:
    # 多个except子句可以按顺序捕获不同类型的异常
    raise ValueError("A specific error")
except ValueError as ve:
    print("捕获到一个ValueError:", ve)
except Exception as e:
    # 使用Exception作为最后的兜底,捕获所有未被前面except子句捕获的异常
    print("捕获到一个通用异常:", e)

例4

try:
    # 如果try块内的代码没有引发任何异常,则执行else子句
    safe_operation()
except SomeException:
    handle_exception()
else:
    # 此处的代码仅在try块成功执行且未引发异常时运行
    everything_went_fine()

例5

try:
    risky_operation()
finally:
    # 不管try块内是否发生异常,finally中的代码总会被执行
    clean_up_resources()

例6

try:
    do_something_risky()
except Exception as e:
    logging.error("An exception occurred", exc_info=True)
    # 可以选择再次抛出异常,保持原始堆栈跟踪信息
    raise

例7

try:
    possibly_fail()
except SomeException:
    handle_error_and_continue()
# 继续执行后续代码
proceed_with_other_tasks()

例8

try:  
    # 尝试执行的代码  
    x = 1 / 0  # 这里会引发一个ZeroDivisionError  
except ZeroDivisionError as e:  
    # 当发生ZeroDivisionError异常时执行的代码  
    print("发生了除以零的错误,错误信息为:", e)  
else:  
    # 如果try代码块中的代码没有引发任何异常,则执行此代码块  
    print("try代码块中的代码成功执行")  
finally:  
    # 不论是否发生异常,都会执行的代码  
    print("finally代码块中的代码总是会执行")

结论

通过try结构,可以构建复杂的异常处理逻辑,确保程序在遇到预期或非预期错误时能给出适当的反馈,并采取恢复措施。


目录
相关文章
|
Python
Python异常捕获和处理语句 try-except-else-finally
Python异常捕获和处理语句 try-except-else-finally
314 0
|
安全 Python
一文彻底搞懂Python异常处理:try-except-else-finally
一文彻底搞懂Python异常处理:try-except-else-finally
|
安全 Python
彻底搞懂Python异常处理:try-except-else-finally
彻底搞懂Python异常处理:try-except-else-finally
|
9月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1452 102
|
9月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
480 104
|
9月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
373 103
|
9月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
398 82
|
8月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
491 3
|
8月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
718 3
|
8月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
530 3

推荐镜像

更多