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结构,可以构建复杂的异常处理逻辑,确保程序在遇到预期或非预期错误时能给出适当的反馈,并采取恢复措施。


目录
相关文章
|
6月前
|
Python
Python异常捕获和处理语句 try-except-else-finally
Python异常捕获和处理语句 try-except-else-finally
50 0
|
安全 Python
一文彻底搞懂Python异常处理:try-except-else-finally
一文彻底搞懂Python异常处理:try-except-else-finally
|
安全 Python
彻底搞懂Python异常处理:try-except-else-finally
彻底搞懂Python异常处理:try-except-else-finally
|
14天前
|
安全 数据处理 开发者
Python中的多线程编程:从入门到精通
本文将深入探讨Python中的多线程编程,包括其基本原理、应用场景、实现方法以及常见问题和解决方案。通过本文的学习,读者将对Python多线程编程有一个全面的认识,能够在实际项目中灵活运用。
|
8天前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
1天前
|
存储 人工智能 数据挖掘
从零起步,揭秘Python编程如何带你从新手村迈向高手殿堂
【10月更文挑战第32天】Python,诞生于1991年的高级编程语言,以其简洁明了的语法成为众多程序员的入门首选。从基础的变量类型、控制流到列表、字典等数据结构,再到函数定义与调用及面向对象编程,Python提供了丰富的功能和强大的库支持,适用于Web开发、数据分析、人工智能等多个领域。学习Python不仅是掌握一门语言,更是加入一个充满活力的技术社区,开启探索未知世界的旅程。
10 5
|
1天前
|
人工智能 数据挖掘 开发者
探索Python编程:从基础到进阶
【10月更文挑战第32天】本文旨在通过浅显易懂的语言,带领读者从零开始学习Python编程。我们将一起探索Python的基础语法,了解如何编写简单的程序,并逐步深入到更复杂的编程概念。文章将通过实际的代码示例,帮助读者加深理解,并在结尾处提供练习题以巩固所学知识。无论你是编程新手还是希望提升编程技能的开发者,这篇文章都将为你的学习之旅提供宝贵的指导和启发。
|
14天前
|
弹性计算 安全 小程序
编程之美:Python让你领略浪漫星空下的流星雨奇观
这段代码使用 Python 的 `turtle` 库实现了一个流星雨动画。程序通过创建 `Meteor` 类来生成具有随机属性的流星,包括大小、颜色、位置和速度。在无限循环中,流星不断移动并重新绘制,营造出流星雨的效果。环境需求为 Python 3.11.4 和 PyCharm 2023.2.5。
|
6天前
|
数据处理 Python
从零到英雄:Python编程的奇幻旅程###
想象你正站在数字世界的门槛上,手中握着一把名为“Python”的魔法钥匙。别小看这把钥匙,它能开启无限可能的大门,引领你穿梭于现实与虚拟之间,创造属于自己的奇迹。本文将带你踏上一场从零基础到编程英雄的奇妙之旅,通过生动有趣的比喻和实际案例,让你领略Python编程的魅力,激发内心深处对技术的渴望与热爱。 ###
|
9天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第24天】本文将带你进入Python的世界,从最基础的语法开始,逐步深入到实际的项目应用。我们将一起探索Python的强大功能和灵活性,无论你是编程新手还是有经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python的奇妙之旅吧!