当前位置: 首页 > news >正文

Python 异常处理试卷

Python 异常处理试卷

选择题(每题 2 分)
  1. 以下哪个语句会导致 ZeroDivisionError 异常?A

    • A. x = 1 / 0
    • B. x = 'string' + 1
    • C. x = '10' - 2
    • D. x = [][1]
  2. 在 Python 中,try 块中的代码抛出异常时,哪个部分将会被执行?AC

    • A. finally
    • B. else
    • C. except
    • D. 所有的
  3. 下面的代码会抛出什么异常?A

    try:x = int('hello')
    except ValueError:print("ValueError handled")
    except TypeError:print("TypeError handled")
    
    • A. ValueError
    • B. TypeError
    • C. SyntaxError
    • D. 程序无异常
  4. 在以下代码中,finally 块的作用是什么?C

    try:x = 1 / 0
    except ZeroDivisionError:print("Cannot divide by zero.")
    finally:print("This will always run.")
    
    • A. 只有在 try 中没有异常时才会执行
    • B. 只有 except 处理了异常时才会执行
    • C. finally 块会在异常发生与否时都执行
    • D. 只有在 try 块执行时没有异常时才会执行
  5. try/except 语句中,else 块的作用是什么?A

    • A. 当没有发生异常时执行
    • B. 无论是否发生异常都执行
    • C. 总是在 try 块抛出异常后执行
    • D. 只有当 except 捕获了异常时执行

填空题(每题 2 分)
  1. Python 中用于捕获异常的关键字是:_except_____。

  2. 在 Python 中,finally 块中的代码会在 __异常/不异常_ 发生后执行。

  3. ValueError 是一种 __内置__ 异常。

  4. 通过 raise 语句可以手动抛出 __自定义__ 异常。

  5. 处理异常时,except 块的顺序是 _自上而下_(正确顺序)。


编程题(每题 5 分)
  1. 编写一个函数 divide(a, b),该函数接受两个参数并返回它们的商。如果参数 b 为 0,应该抛出 ZeroDivisionError,并给出自定义的错误消息。

    def divide(a, b):try:return a / bexcept ZeroDivisionError:print("Error: Division by zero is not allowed.")
    

  2. 编写一个函数 read_file(file_name),该函数打开一个文件并返回其内容。如果文件不存在,应该捕获 FileNotFoundError 异常并输出错误消息“文件未找到”。如果文件为空,则输出“文件为空”。

    def read_file(file_name):try:with open(file_name, 'r') as f:content = f.read()if content == '':print("文件为空")else:print(content)except FileNotFoundError:print("文件未找到")
    

  3. 编写一个函数 validate_age(age),该函数接受一个整数 age,如果 age 不是整数或小于 0,则抛出一个自定义的 InvalidAgeError 异常。

    class InvalidAgeError(Exception):passdef validate_age(age):if not isinstance(age, int):raise InvalidAgeError("年龄必须是一个整数")if age < 0:raise InvalidAgeError("年龄不能为负数")
    

  4. 编写一个程序,模拟一个银行账户。创建一个类 BankAccount,该类包含一个 deposit(amount) 方法,用于存款。如果存款金额为负数,应该抛出 ValueError 并给出错误提示“存款金额必须是正数”。

    class BankAccount:def __init__(self):self.balance = 0def deposit(self, amount):if amount <= 0:raise ValueError("存款金额必须是正数")self.balance += amountprint(f"存款成功,当前余额: {self.balance}")
    


简答题(每题 4 分)

1.简述 Python 中异常处理机制的基本流程。

程序首先进入 try 块执行代码。如果没有异常,程序继续执行。如果发生异常,控制权跳转到匹配的 except 块。如果异常被捕获并处理,程序继续执行。如果没有捕获到异常,则会抛出未处理的异常。可选的 else 块在 try 块没有异常时执行,finally 块无论是否发生异常都会执行。

2.解释 tryexceptelsefinally 的作用,并给出示例。

try:用于包含可能引发异常的代码。

except:用于捕获并处理异常。

else:当没有异常发生时执行的代码块。

finally:无论是否发生异常都会执行的代码块,通常用于清理资源。

3.什么情况下应该使用 raise 语句抛出自定义异常?请举例说明。

当你需要在程序中传递特定类型的错误信息,或希望对某些不合要求的输入或状态进行明确的异常处理时,使用 raise 语句。例如,验证用户输入的年龄时,如果输入无效,可以使用 raise 抛出自定义异常,提示错误。


http://www.mrgr.cn/news/75126.html

相关文章:

  • 分布式相关杂项
  • 【go从零单排】通道select、通道timeout、Non-Blocking Channel Operations非阻塞通道操作
  • java:继承题练习
  • 基于STM32的智能家居安防系统设计
  • 世界坐标系、相机坐标系、图像物理坐标系、像素平面坐标系
  • ctfshow-web入门-SSTI(web361-web368)上
  • 【HarmonyOS】鸿蒙系统在租房项目中的项目实战(一)
  • 大语言模型LLM综述
  • GRU(门控循环单元)详解
  • Siggraph Asia 2024 | Adobe发布MagicClay:可通过文字引导去对3D模型中的特定部分进行雕刻
  • 【今天的乐子】你真懂代码吗?挑战这10个笑话,程序员专属梗了解一下
  • C++《继承》
  • 企业运营的智能化升级:AI助理与SOP的融合之道
  • java八股-jvm入门-程序计数器,堆,元空间,虚拟机栈,本地方法栈,类加载器,双亲委派,类加载执行过程
  • 线程的状态有哪些?它是如何工作的?
  • SMA-BP基于黏菌算法优化BP神经网络时间序列预测
  • 解析安卓镜像包和提取DTB文件的操作日志
  • 探索AutoDL与CodeWithGPU:深度学习之旅的新起点
  • 时序论文20|ICLR20 可解释时间序列预测N-BEATS
  • 【算法一周目】双指针(2)
  • JavaScript总结
  • Path.Combine容易被忽略的细节
  • DAPP迎启动契机,Scroll 生态全面启动为 Pencils Protocol 赋能
  • C++函数的返回值在内存中的传递过程
  • 第4章-计划 4.4 范围管理
  • Python基础学习-07不可重复的set集合