Python中异常处理小测验

试卷

一、选择题(每题2分,共20分)

  1. 在Python中,用于捕获异常的关键字是:
    A. try
    B. except
    C. finally
    D. all of the above

  2. 下列哪个异常类型表示除零错误?
    A. ZeroDivisionError
    B. ValueError
    C. IndexError
    D. TypeError

  3. 使用try-except结构时,如果在try块中发生异常且没有在相应的except块中处理,那么程序将:
    A. 正常运行
    B. 抛出异常并终止
    C. 跳转到finally块
    D. 忽略异常并继续执行

  4. 以下哪个语句可以用来捕获所有类型的异常?
    A. except Exception as e
    B. except e
    C. except all
    D. except

  5. 在try-except-finally结构中,哪个块的内容无论是否发生异常都会执行?
    A. try
    B. except
    C. else
    D. finally

  6. 下列哪个异常类型表示文件未找到?
    A. FileNotFoundError
    B. IOError
    C. OSError
    D. A and C

  7. 使用try-except结构时,可以指定多个异常类型一起捕获的方式是:
    A. except (ValueError, TypeError):
    B. except ValueError, TypeError:
    C. except ValueError or TypeError:
    D. except [ValueError, TypeError]:

  8. 下列关于自定义异常的说法,正确的是:
    A. 自定义异常必须继承自Exception类
    B. 自定义异常不能继承自内置的异常类
    C. 自定义异常类不需要定义任何方法
    D. 自定义异常不能抛出

  9. 使用raise语句可以:
    A. 仅捕获异常
    B. 仅抛出异常
    C. 同时捕获和抛出异常
    D. 忽略异常

  10. 在Python中,可以使用哪个函数来重新引发当前捕获的异常?
    A. raise
    B. re-raise
    C. rethrow
    D. re-exception

二、填空题(每题2分,共20分)

  1. 在Python中,异常处理的基本结构是______、和(可选的)
  2. 要捕获除零错误,应该使用______异常类型。
  3. 如果想在捕获异常后执行一些清理工作,无论是否发生异常,都应该使用______块。
  4. 在try-except结构中,可以使用______关键字来指定捕获特定类型的异常。
  5. 自定义异常类必须继承自______类。
  6. 要捕获文件未找到的异常,应该使用______异常类型。
  7. 在使用raise语句抛出异常时,可以指定______和______(可选)。
  8. 要捕获多个异常类型,可以在except后面使用______来分隔它们。
  9. 在try-except结构中,可以使用______块来执行当没有异常发生时才需要执行的代码。
  10. 如果想在捕获异常后仍然向上层代码抛出该异常,可以使用______语句。

三、简答题(每题10分,共30分)

  1. 解释Python中异常处理的作用,并给出一个简单的例子。
  2. 详述try-except-else-finally结构的工作流程。
  3. 请描述如何自定义一个异常类,并给出其应用场景。

四、编程题(共30分)

  1. 编写一个Python程序,要求用户输入一个数字并除以另一个数字,如果发生除零错误,则捕获该异常并提示用户“除数不能为零”。(15分)
  2. 编写一个Python程序,尝试打开一个不存在的文件,如果文件不存在,则捕获该异常并提示用户“文件未找到”。(15分)

考试知识点及易错点整理

知识点

  • try-except结构的基本用法
  • 捕获特定异常类型
  • else和finally块的使用
  • 自定义异常类
  • 使用raise语句抛出异常
  • 捕获多个异常类型

易错点

  • 混淆try-except-else-finally的结构和用法
  • 忘记在finally块中执行必要的清理工作
  • 误用except语句来捕获所有异常(应使用except Exception as e)
  • 自定义异常类时忘记继承自Exception类
  • 在捕获异常后未重新抛出(如果需要的话)

Python中异常处理的试卷 答案

一、选择题

  1. D. all of the above
    解释:try、except、finally都是异常处理的关键字。

  2. A. ZeroDivisionError
    解释:ZeroDivisionError表示除零错误。

  3. B. 抛出异常并终止
    解释:如果try块中发生异常且没有在相应的except块中处理,程序将抛出异常并终止。

  4. A. except Exception as e
    解释:except Exception as e可以捕获所有继承自Exception的异常。

  5. D. finally
    解释:finally块的内容无论是否发生异常都会执行。

  6. D. A and C
    解释:FileNotFoundError是OSError的一个子类,通常用于表示文件未找到的错误,而OSError是一个更广泛的异常类型,涵盖了与操作系统相关的各种错误。

  7. A. except (ValueError, TypeError):
    解释:可以在except后面使用圆括号来指定多个异常类型。

  8. A. 自定义异常必须继承自Exception类
    解释:自定义异常类必须继承自内置的Exception类或其子类。

  9. B. 仅抛出异常
    解释:raise语句用于抛出异常。

  10. A. raise
    解释:在捕获异常后,可以使用raise语句重新引发该异常。

二、填空题

  1. try, except, finally
  2. ZeroDivisionError
  3. finally
  4. except
  5. Exception
  6. FileNotFoundError 或 OSError
  7. 异常对象, 异常信息(或异常类型和异常信息,取决于具体实现)
  8. 逗号
  9. else
  10. raise

三、简答题

1. 解释Python中异常处理的作用,并给出一个简单的例子。

异常处理在Python中的作用是增强程序的健壮性和容错性。当程序运行过程中出现错误或异常情况时,异常处理机制能够捕获这些异常,并允许程序采取适当的措施来处理这些异常,而不是直接崩溃或终止。

简单例子:

try:result = 10 / 0  # 尝试进行除零操作,这会引发一个ZeroDivisionError异常
except ZeroDivisionError:print("除数不能为零")  # 捕获异常并打印提示信息

 2. 详述try-except-else-finally结构的工作流程。

try-except-else-finally结构的工作流程如 下:

  1. try块:首先执行try块中的代码。如果try块中的代码没有引发任何异常,那么程序会继续执行else块(如果存在)或finally块(如果存在)。如果try块中的代码引发了异常,那么程序会跳转到与异常类型相匹配的except块。

  2. except块:如果try块中的代码引发了异常,并且有一个except块与异常类型相匹配,那么程序会执行该except块中的代码。可以有多个except块来处理不同类型的异常。

  3. else块(可选):如果try块中的代码成功执行而没有引发任何异常,那么程序会执行else块中的代码。else块是可选的,通常用于在try块成功执行后执行一些清理工作或额外的操作。

  4. finally块(可选):无论try块是否成功执行,finally块中的代码都会执行。finally块通常用于释放资源(如关闭文件、断开数据库连接等),因为这些操作无论是否发生异常都需要执行。

3. 请描述如何自定义一个异常类,并给出其应用场景。

在Python中,可以通过继承内置的Exception类来自定义一个异常类。自定义异常类允许你定义具有特定含义和行为的异常类型。

自定义异常类的基本语法如下:

class MyCustomException(Exception):def __init__(self, message):super().__init__(message)self.message = messagedef __str__(self):return self.message

应用场景:自定义异常类可以用于在程序中表示特定的错误情况,这些错误情况可能不是内置的异常类型所能准确描述的。例如,在一个银行账户管理系统中,你可以定义一个InsufficientFundsException来表示账户余额不足的情况。

四、编程题

1. 编写一个Python程序,要求用户输入一个数字并除以另一个数字,如果发生除零错误,则捕获该异常并提示用户“除数不能为零”。

try:num1 = float(input("请输入第一个数字:"))num2 = float(input("请输入第二个数字(除数):"))result = num1 / num2print(f"结果是:{result}")
except ZeroDivisionError:print("除数不能为零")

2. 编写一个Python程序,尝试打开一个不存在的文件,如果文件不存在,则捕获该异常并提示用户“文件未找到”。

try:with open("nonexistent_file.txt", "r") as file:content = file.read()print(content)
except FileNotFoundError:print("文件未找到")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/471000.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

acwing算法基础02一高精度,前缀和,差分

#include <iostream> #include <vector> using namespace std;const int N 1e6 10; //模板 CABvector<int> add(vector<int> &A,vector <int> &B) {vector<int> C;int t 0; // 用来保存每位的和&#xff08;包括进位&#xff…

WebAssembly在现代Web开发中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 WebAssembly在现代Web开发中的应用 WebAssembly在现代Web开发中的应用 WebAssembly在现代Web开发中的应用 引言 WebAssembly 概述…

06.VSCODE:备战大项目,CMake专项配置

娇小灵活的简捷配置不过是年轻人谈情说爱的玩具&#xff0c;帝国大厦的构建&#xff0c;终归要交给CMake去母仪天下。一个没有使用 CMake 的 C 项目&#xff0c;就像未来世界里的一台相声表演&#xff0c;有了德纲却无谦&#xff0c;观众笑着遗憾。—— 语出《双城记》作者&…

从社交媒体到元宇宙:Facebook未来发展新方向

Facebook&#xff0c;作为全球最大的社交媒体平台之一&#xff0c;已经从最初的简单互动工具发展成为一个跨越多个领域的科技巨头。无论是连接人与人之间的社交纽带&#xff0c;还是利用大数据、人工智能等技术为用户提供个性化的体验&#xff0c;Facebook一直引领着社交网络的…

【go从零单排】JSON序列化和反序列化

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在 Go 语言中&#xff0c;处理 JSON 数据主要依赖于 encoding/json 包。这个包提…

vue2.7.14 + vant + vue cli脚手架转vite启动运行问题记录

文章目录 前言方案一&#xff08;借用插件转换&#xff09;启动命令&#xff0c;转换方案一转换遇到的问题 方案二&#xff08;手动调整&#xff09;方案两者对比小结 前言 vue cli 脚手架转成vite启动 简单说说这个项目的一些底层基本结构哈&#xff0c;以及写这篇博客的目的…

Linux 常用操作指令大揭秘(下)

&#x1f31f;快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 &#x1f31f; &#x1f6a9;用通俗易懂且不失专业性的文字&#xff0c;讲解计算机领域那些看似枯燥的知识点&#x1f6a9; 目录 &#x1f4af;…

HBase使用create创建表时报错ERROR: KeeperErrorCode = NoNode for /hbase/master

场景模拟 1. 正常情况 模拟ERROR: KeeperErrorCode NoNode for /hbase/master错误场景。 正常情况下创建hbase表如下图所示。 2. 删除hbase集群的zk节点 进入zookeeper客户端。 zkCli.sh删除hbase的zk节点。 deleteall /hbase退出zookeeper客户端。 quit3. 重启hbase集…

【设计模式】行为型模式(二):策略模式、命令模式

行为型模式&#xff08;二&#xff09;&#xff1a;策略模式、命令模式 3.策略模式&#xff08;Strategy&#xff09;3.1 示例3.1.1 定义策略接口3.1.2 实现具体策略3.1.3 定义上下文类3.1.4 客户端代码3.1.5 输出结果 3.2 总结3.2.1 优点3.2.2 缺点 4.命令模式&#xff08;Com…

java八股-jvm入门-程序计数器,堆,元空间,虚拟机栈,本地方法栈,类加载器,双亲委派,类加载执行过程

文章目录 PC Register堆虚拟机栈方法区(Metaspace元空间双亲委派机制类加载器 类装载的执行过程 PC Register 程序计数器&#xff08;Program Counter Register&#xff09;是 Java 虚拟机&#xff08;JVM&#xff09;中的一个组件&#xff0c;它在 JVM 的内存模型中扮演着非常…

Python →爬虫实践

爬取研究中心的书目 现在&#xff0c;想要把如下网站中的书目信息爬取出来。 案例一 耶鲁 Publications | Yale Law School 分析网页&#xff0c;如下图所示&#xff0c;需要爬取的页面&#xff0c;标签信息是“<p>”&#xff0c;所以用 itemssoup.find_all("p&…

【Linux】-学习笔记03

第十一章-管理Linux软件包和进程 1.源码下载安装软件 1.1概念 源码文件&#xff1a;程序编写者使用C或C等语言编写的原始代码文本文件 源码文件使用.tar.gz或.tar.bz2打包成压缩文件 1.2特点 源码包可移植性好&#xff0c;与待安装软件的工作环境依赖性不大 由于有编译过程…

排序算法 - 冒泡

文章目录 1. 冒泡排序1.1 简介1.2 基本步骤&#xff1a;1.3 示例代码&#xff08;C&#xff09;1.4 复杂度分析1.5 动画展示 1. 冒泡排序 1.1 简介 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;其基本思想是通过相邻元素的比较和交换&#…

前端请求后端php接口跨域 cors问题

只需要后端在网站的入口文件 一般都是 index.php 加上 这几行代码就可以了 具体的参数可以根据需要去修改 header("Access-Control-Allow-Origin: *"); header(Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS); header(Access-Control-Allow-Heade…

Django基础用法+Demo演示

Django快速上手 参考: Django快速上手 再写几个页面 编辑demo1/urls.py, 添加URL和视图函数映射 urlpatterns [path(index/, views.index),path(user/list/, views.user_list),path(user/add/, views.user_add), ]编辑app01/views.py&#xff0c;添加几个函数 from djang…

数据集标注txt文件读取小工具

最近在看遥感图像目标检测相关的yolo10&#xff0c;自己在网上下载了数据集跑模型&#xff0c;但是跑出来的结果与数据集出处的论文介绍分类有些不同&#xff0c;只出现了分类0的情况&#xff0c;怀疑是标注有问题&#xff0c;但是数据集太大&#xff0c;于是做了个小工具对标注…

docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled

无数次的拉镜像让人崩溃&#xff1a; rootnode11:~/ragflow/docker# more rag.sh #export HTTP_PROXYhttp://192.168.207.127:7890 #export HTTPS_PROXYhttp://192.168.207.127:7890 #export NO_PROXYlocalhost,127.0.0.1,.aliyun.com docker compose -f docker-compose-gpu-C…

ubuntu-desktop-24.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法)

ubuntu-desktop-24.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法) 一、更新并安装基础软件 #切换root用户 sudo su -#更新 apt update #升级 apt upgrade#install vim apt install vim#install net-tools apt install net-tools二、安装ssh并设置…

UDP协议和TCP协议之间有什么具体区别?

UDP&#xff08;User Datagram Protocol&#xff09;和TCP&#xff08;Transmission Control Protocol&#xff09;是两种常见的网络传输协议&#xff0c;它们在数据传输中有着显著的区别和适用场景。理解它们的区别对于网络工程师、软件开发人员以及网络安全专家都是至关重要的…

使用Docker快速部署FastAPI Web应用

Docker是基于 Linux 内核的cgroup、namespace以及 AUFS 类的Union FS 等技术&#xff0c;对进程进行封装隔离&#xff0c;一种操作系统层面的虚拟化技术。Docker中每个容器都基于镜像Image运行&#xff0c;镜像是容器的只读模板&#xff0c;容器是模板的一个实例。镜像是分层结…