2.2.4-异常处理.md

问答库

2.2.4 异常处理(问答库)

  1. 【单选题·易】异常处理机制的主要作用是什么? A. 让程序运行得更快 B. 捕获错误并做出相应处理,提高稳健性和容错能力 C. 把 Python 源码编译成 CPU 可直接执行的机器指令 D. 自动给变量命名 答案:B 解析: 课程指出:异常处理机制用于捕获错误并做出相应的处理,从而提高程序的稳健性和容错能力,提升用户体验。A、C、D 都不是异常处理的作用。
  2. 【单选题·易】Python 提供哪种结构来实现异常处理? A. if-else B. for-in C. try-except D. def-return 答案:C 解析: 课程明确:Python 提供 try-except 结构来实现异常处理。if-else 是条件语句,for-in 用于遍历,def-return 用于函数定义。
  3. 【判断题·易】将执行代码块放在 try 块中,如果在执行过程中发生异常,程序会跳到对应的 except 异常处理代码块进行处理。 答案:√ 解析: 这是课程对 try-except 执行过程的直接表述。
  4. 【判断题·易】异常处理可以提高程序的稳健性和容错能力,从而提升用户体验。 答案:√ 解析: 课程将稳健性、容错能力和用户体验并列为异常处理的目的。
  5. 【多选题·中】关于 try-except 结构,下列说法正确的有: A. try 后面必须写冒号 B. except 后面必须写冒号 C. try 与 except 下面的代码块必须缩进,且同一级缩进一致 D. except 代码块必须写在 try 代码块之前 答案:ABC 解析: 课程给出的一般形式是先 try、后 except,二者后面都有冒号,代码块靠缩进划分。D 颠倒了顺序,语法不正确。
  6. 【单选题·中】运行下列程序,输出结果是什么?
try:
    result = 10 / 0
except:
    print("除零错误")

A. 0 B. 10 C. 除零错误 D. 程序崩溃且没有任何输出 答案:C 解析: 这是课程实例。10 / 0 在 try 中引发异常,程序跳到 except,执行 print("除零错误"),因此输出为“除零错误”,程序不会因此直接崩溃。

  1. 【多选题·中】下列操作在运行时可能引发异常、因而适合放入 try 中捕获的有: A. 访问已被 del 删除的变量 B. 用列表的 remove() 删除一个列表中不存在的元素 C. 用方括号读取字典中不存在的键 D. 计算 1 + 1 答案:ABC 解析: 课程前文指出:删除变量后再访问会引发 NameError;remove() 找不到元素会引发 ValueError;用 [] 访问不存在的键会引发 KeyError。1 + 1 是正常运算,不会引发异常。
  2. 【判断题·中】用字典的 get() 方法读取一个不存在的键时,会引发 KeyError。 答案:× 解析: 课程强调:用方括号访问不存在的键会引发 KeyError;get() 在键不存在时返回 None 或指定的默认值,正是为了避免这种情况。
  3. 【单选题·难】运行下列程序,输出结果是什么?
try:
    print("开始")
    result = 10 / 0
    print("计算完成")
except:
    print("除零错误")
print("结束")

A. 三行依次为:开始 / 计算完成 / 结束 B. 三行依次为:开始 / 除零错误 / 结束 C. 仅一行:除零错误 D. 两行依次为:开始 / 结束 答案:B 解析: try 中先输出“开始”,随后 10 / 0 引发异常,print("计算完成") 被跳过;程序转入 except,输出“除零错误”;try-except 之后的 print("结束") 仍会执行。因此三行依次为:开始、除零错误、结束。

  1. 【简答题·中】请简述异常处理的作用,并说明 try-except 的执行过程。 答案: 作用:捕获错误并做出相应处理,提高程序的稳健性和容错能力,提升用户体验。执行过程:把可能出错的代码放在 try 块中;若执行过程中发生异常,程序跳到对应的 except 块进行处理;若 try 中没有发生异常,则不执行 except,程序按正常流程继续。 解析: 评分要点:①写出捕获错误、稳健性/容错/用户体验中至少两点;②说明“有异常则进 except、无异常则跳过 except”。
  2. 【简答题·难】按要求写出两段可直接运行的程序:(1)课程中的除零示例;(2)尝试以只读方式打开当前目录下不存在的文件 not_exist.txt,捕获异常后输出“无法打开文件”。 答案:

(1)除零示例:

try:
    result = 10 / 0
except:
    print("除零错误")

(2)打开不存在的文件:

try:
    f = open("not_exist.txt", "r")
    f.close()
except:
    print("无法打开文件")

解析: 评分要点:①两段均使用 try-except,冒号与缩进正确,可直接运行;②除零示例与课程一致,输出“除零错误”;③open 放在 try 中,except 中有明确提示。若 not_exist.txt 恰好已存在,第(2)段可能不进入 except,评阅时以结构是否正确为主。

  1. 【单选题·中】下列哪一项在运行时会引发异常? A. '字体' in {'字体': '宋', '字号': 14} B. 创建集合 {2, 3, 3, 4} C. [1, 2, 3].remove(5) D. "Hello, world!".find("你好") 答案:C 解析: remove() 找不到指定元素会引发 ValueError。A 用 in 判断键是否存在,结果为 True,不异常;B 集合自动去重得到 {2, 3, 4};D 的 find() 找不到子串时返回 -1,不会引发异常。
  2. 【判断题·难】只要把整个程序都写进 try 块,即使某一行漏写了冒号导致语法错误,except 也能捕获该错误并让程序继续运行。 答案:× 解析: 漏写冒号属于语法错误,解释器在解析源程序时就会失败,try-except 尚未开始执行,因而捕获不到。此外,try 块也不应无节制地包裹全部代码:一旦发生异常,try 中尚未执行的语句会被跳过,反而更难排查。
下载此文件