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


目录
相关文章
|
11天前
|
Python
Python异常捕获和处理语句 try-except-else-finally
Python异常捕获和处理语句 try-except-else-finally
29 0
|
9月前
|
安全 Python
一文彻底搞懂Python异常处理:try-except-else-finally
一文彻底搞懂Python异常处理:try-except-else-finally
|
9月前
|
安全 Python
彻底搞懂Python异常处理:try-except-else-finally
彻底搞懂Python异常处理:try-except-else-finally
|
5天前
|
存储 算法 安全
Python编程实验六:面向对象应用
Python编程实验六:面向对象应用
21 1
|
5天前
|
Python
Python编程作业五:面向对象编程
Python编程作业五:面向对象编程
20 1
|
1天前
|
机器学习/深度学习 数据处理 算法框架/工具
Python标准库与第三方库:强大的编程资源
Python标准库与第三方库:强大的编程资源
|
2天前
|
Python 容器
Python与GUI编程:创建图形用户界面
Python的Tkinter库是用于构建GUI应用的内置工具,无需额外安装。它提供了丰富的控件,如按钮、文本框等,让用户通过图形界面与程序交互。创建GUI窗口的基本步骤包括:导入Tkinter库,创建窗口对象,设置窗口属性,添加控件(如标签和按钮),并使用布局管理器(如`pack()`或`grid()`)来组织控件的位置。此外,可以通过绑定事件处理函数来响应用户操作,例如点击按钮。Tkinter还有更多高级功能,适合开发复杂GUI应用。
|
2天前
|
机器学习/深度学习 网络协议 数据库
Python编程实战:解决常见编程问题
```markdown Python编程入门指南:涵盖文件操作、列表操作、字符串处理、函数编写、异常处理、网络编程和数据库操作等实战案例。通过示例代码,学习如何读写文件、排序列表、转换字符串、创建函数、处理异常、构建TCP服务器及操作SQLite数据库,逐步掌握Python核心技能。 ```
|
2天前
|
机器学习/深度学习 人工智能 数据可视化
Python编程入门:从零开始探索编程的奇妙世界
这篇教程引导初学者入门Python编程,从安装Python开始,逐步讲解基本语法,如`print()`、变量、条件判断、循环以及自定义函数。文章强调了Python在数据处理、数据分析、人工智能和机器学习等领域的重要性,并鼓励学习者探索Python的广泛应用,开启编程之旅。
|
3天前
|
C语言 Python
专为编程小白设计的Python零基础入门教程,GitHub星标破W
市面上大多数技术类的书籍都着重于一步步的构建系统的知识体系,并不是说这样就是不对的,但这样按部就班的学习注定了需要花费大量的时间用来掌握“基础知识”,或死记硬背,或慢慢理解。 然而世界不会迁就你,而是在步步紧逼的告诉你要赶紧学完,赶紧找工作,赶紧挣钱,这才是你生活的基础。 今天给小伙伴们带来了一份《编程小白的第一步Python书》,这本书是专为零基础小白设计的,不会告诉“先学C语言,会更好理解Python”这种狗屁道理。而是先带你掌握搭建项目所用到的最少得知识,再真实的项目搭建中实践自己的所学,逐渐的完善知识体系