前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python】异常处理 ② ( 异常类型简介 | 捕获并处理指定异常 | 捕获多个类型异常 )

【Python】异常处理 ② ( 异常类型简介 | 捕获并处理指定异常 | 捕获多个类型异常 )

作者头像
韩曙亮
发布2023-10-11 19:02:01
3600
发布2023-10-11 19:02:01
举报
文章被收录于专栏:韩曙亮的移动开发专栏

一、Python 捕获指定类型异常

1、异常类型简介

Python 中的 异常 由 异常类 Exception Class 表示 , 每个异常类都代表一个特定的错误类型 ;

常见的 异常类 :

  • FileNotFoundError : 表示打开一个不存在的文件错误 ;
  • ZeroDivisionError : 表示除以零的错误 ;
  • ValueError : 表示一个无效的值 ;
  • KeyError : 表示在字典中不存在指定的键 ;
  • IndexError : 表示在列表或元组中不存在指定的索引 ;
  • IOError : 表示 I/O 错误 , 例如无法读取或写入文件 ;

当发生异常时 , 程序会停止执行当前语句 , 并跳转到异常处理程序 Exception Handler , 该程序负责处理异常并防止程序崩溃 ;

在 Python 中 , 可以使用 try-except 语句来 捕获 和 处理异常 ;

2、捕获并处理指定异常

在 Python 中 , 可以捕获指定类型的异常 , 语法如下 :

代码语言:javascript
复制
try:
	可能出现异常的代码块
except 异常类型 as 异常别名:
	出现异常后执行的代码块
	可使用异常别名获取异常对象

3、代码实例 - 捕获并处理指定异常

代码示例 :

代码语言:javascript
复制
"""
文件操作 代码示例
"""

try:
    open("file3.txt", "r", encoding="UTF-8")
except FileNotFoundError as e:
    print(f"出现异常, 进行异常处理, 异常内容 : {e}")
    open("file3.txt", "w", encoding="UTF-8")

执行结果 :

代码语言:javascript
复制
/Users/zyq/PycharmProjects/Hello/venv/bin/python /Users/zyq/PycharmProjects/Hello/main.py 
出现异常, 进行异常处理, 异常内容 : [Errno 2] No such file or directory: 'file3.txt'

Process finished with exit code 0

4、代码实例 - 异常捕获失败案例

如果捕获异常时 , 没有捕获到正确的异常 , 则异常仍然会爆出 , 程序会被终止 ;

在下面的代码中 , 捕获的是 FileNotFoundError , 如果出现了其他类型的异常 , 如 ZeroDivisionError , 则会直接导致程序停止运行 ;

下面的代码中执行了 num = 1 / 0 代码 , 会报 ZeroDivisionError 异常 ;

代码示例 :

代码语言:javascript
复制
"""
文件操作 代码示例
"""

try:
    num = 1 / 0
    open("file3.txt", "r", encoding="UTF-8")
except FileNotFoundError as e:
    print(f"出现异常, 进行异常处理, 异常内容 : {e}")
    open("file3.txt", "w", encoding="UTF-8")

执行结果 :

代码语言:javascript
复制
/Users/zyq/PycharmProjects/Hello/venv/bin/python /Users/zyq/PycharmProjects/Hello/main.py 
Traceback (most recent call last):
  File "/Users/zyq/PycharmProjects/Hello/main.py", line 6, in <module>
    num = 1 / 0
ZeroDivisionError: division by zero

Process finished with exit code 1

二、Python 捕获多个类型异常

1、捕获多个异常语法

捕获多个异常语法 :

代码语言:javascript
复制
try:
	可能出现异常的代码块
except (异常类型1, 异常类型2, 异常类型3, ...) as 异常别名:
	出现异常后执行的代码块
	可使用异常别名获取异常对象

2、代码实例 - 捕获多个异常

在下面的代码中可能出现 FileNotFoundError, ZeroDivisionError 两种异常 , 在进行异常捕获时同时捕获这两种异常 ;

执行时 , 如果出现了这两种异常中的一种, 异常会被捕获 , 并进行处理 ;

代码示例 :

代码语言:javascript
复制
"""
文件操作 代码示例
"""

try:
    num = 1 / 0
    open("file3.txt", "r", encoding="UTF-8")
except (FileNotFoundError, ZeroDivisionError) as e:
    print(f"出现异常, 进行异常处理, 异常内容 : {e}")

执行结果 :

代码语言:javascript
复制
/Users/zyq/PycharmProjects/Hello/venv/bin/python /Users/zyq/PycharmProjects/Hello/main.py 
出现异常, 进行异常处理, 异常内容 : division by zero

Process finished with exit code 0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Python 捕获指定类型异常
    • 1、异常类型简介
      • 2、捕获并处理指定异常
        • 3、代码实例 - 捕获并处理指定异常
          • 4、代码实例 - 异常捕获失败案例
          • 二、Python 捕获多个类型异常
            • 1、捕获多个异常语法
              • 2、代码实例 - 捕获多个异常
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档