自学内容网 自学内容网

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 / b
        except 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):
        pass
    
    def 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 = 0
    
        def deposit(self, amount):
            if amount <= 0:
                raise ValueError("存款金额必须是正数")
            self.balance += amount
            print(f"存款成功,当前余额: {self.balance}")
    


简答题(每题 4 分)

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

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

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

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

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

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

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

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

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


原文地址:https://blog.csdn.net/m0_67609958/article/details/143780588

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!