全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 14 道配套习题

异常处理专题

专题说明

本专题系统讲解Python异常处理的核心知识,包括try-except-else-finally语句结构、内置异常类型体系、自定义异常的创建、raise语句的使用以及with上下文管理器的原理。

学习目标

  1. 掌握try-except-else-finally的完整语法结构
  2. 理解Python内置异常类的继承关系
  3. 学会使用raise主动抛出异常
  4. 掌握自定义异常类的编写方法
  5. 理解with语句和上下文管理器的工作原理

学习内容

  • 异常捕获:try-except基本结构、多except分支、except捕获多种异常
  • 完整结构:else子句(无异常时执行)、finally子句(必定执行)
  • 异常体系:BaseException、Exception及常见内置异常
  • 主动抛出:raise语句、重新抛出、异常链(raise from)
  • 自定义异常:继承Exception创建自定义异常类
  • 上下文管理:with语句、__enter__与__exit__方法

学习建议

  1. 理解异常不是错误,而是程序正常运行中可能遇到的异常情况
  2. 避免使用裸except捕获所有异常,应捕获具体的异常类型
  3. finally子句适合做资源清理工作,如关闭文件、释放连接
  4. 自定义异常应有明确的意义,便于其他开发者理解和使用

📝 配套习题(14 题)

💡 参考答案在文末
判断题
1

访问列表中不存在的索引会引发KeyError异常。

A

B

2

使用except ValueError, TypeError:可以同时捕获ValueError和TypeError两种异常。

A

B

3

try语句块中发生异常后,程序会立即跳转到对应的except块,不再执行try块中剩余的代码。

A

B

4

无论try块是否发生异常,finally块中的代码都会执行。

A

B

单选题
5

以下哪种写法可以正确捕获ValueError和TypeError两种异常?

A

except ValueError, TypeError:

B

except (ValueError, TypeError):

C

except ValueError or TypeError:

D

except ValueError + TypeError:

6

以下代码返回什么值?

Python
def test():
    try:
        return 1
    except:
        return 2
    finally:
        return 3
A

1

B

2

C

3

D

报错

7

以下代码会引发什么异常?

Python
d = {'a': 1, 'b': 2}
result = d['c'] + d['a']
A

KeyError

B

TypeError

C

ValueError

D

IndexError

8

以下哪种是捕获特定异常的正确语法?

A

except ValueError as e:

B

except(ValueError):

C

catch ValueError:

D

try ValueError except:

9

finally块最主要的使用场景是什么?

A

打印日志信息

B

返回函数结果

C

清理资源(如关闭文件、释放锁)

D

重新抛出异常

10

以下代码执行后输出什么?

Python
try:
    result = int("abc")
except ValueError:
    print("值错误")
except TypeError:
    print("类型错误")
except Exception:
    print("其他异常")
A

值错误

B

类型错误

C

其他异常

D

程序崩溃

11

以下代码执行后输出什么?

Python
try:
    raise ValueError("测试异常")
except ValueError:
    print("A")
except Exception:
    print("B")
except:
    print("C")
A

A

B

B

C

C

D

ABC

12

执行int("abc")会引发什么异常?

A

TypeError

B

ValueError

C

KeyError

D

AttributeError

多选题
13

关于异常处理,以下说法正确的是?

A

一个try块可以对应多个except块

B

except块应按从具体到通用的顺序排列

C

使用except:可以捕获所有异常

D

多异常捕获必须使用元组形式

E

finally块必须紧跟except块

F

可以使用else块处理无异常的情况

填空题
14

在Python3中,要同时捕获ValueError和TypeError两种异常,正确的语法是使用____________形式:except (____________, ____________)。要获取异常对象,使用as关键字:except (ValueError, TypeError) as e。多个except块应该按照具体到通用的顺序排列,确保特定异常能被正确捕获。

参考答案
1.错误 2.错误 3.正确 4.正确 5.B 6.C 7.A 8.A 9.C 10.A 11.A 12.B 13.A;B;C;D;F 14.元组;ValueError;TypeError
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 并发编程基础专题
下一个专题 → 性能优化专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码