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





一、Python 捕获指定类型异常




1、异常类型简介


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

常见的 异常类 :

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

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

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


2、捕获并处理指定异常


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

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

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


代码示例 :

"""
文件操作 代码示例
"""

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

执行结果 :

/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 异常 ;


代码示例 :

"""
文件操作 代码示例
"""

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")

执行结果 :

/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、捕获多个异常语法


捕获多个异常语法 :

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

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


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

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


代码示例 :

"""
文件操作 代码示例
"""

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

执行结果 :

/Users/zyq/PycharmProjects/Hello/venv/bin/python /Users/zyq/PycharmProjects/Hello/main.py 
出现异常, 进行异常处理, 异常内容 : division by zero

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/131354438