ad

打开《Python 编程与应用实践》_成为Python大佬_8.3 raise 语 句 和 with 语 句

网友投稿 139 2023-11-13

【摘要】 本书摘自《Python 编程与应用实践》一书中第8章,第3节,由冯伟森,王建,杨宁主编。

8.3 raise 语 句 和 with 语 句

(1)raise 语句。

打开《Python 编程与应用实践》_成为Python大佬_8.3 raise 语 句 和 with 语 句

Python 使用raise 语句抛出一个指定的异常。raise 语句的语法如下:

raise #手动引发异常raise #传递附加数据

(2)with 语句。

with 语句的目的在于从异常处理的流程中把 try,except 和 finally 关键字和资源分配 释放相关代码统统去掉,简化代码量,使得程序更加简洁。with 语句的语法如下;

with context_expr [as var]:

with 块

Python中有各种各样的异常类型,如 ZeroDivisionError (除数不能为0)、NameError (命名错误)、SyntaxError(Python 解释器语法错误)、IndexError (请求的索引超出序列

范围)、IOError: (输入/输出错误)等,这些都是比较常见的异常,尽管标准异常集包含 的内容已经相当广泛,用户也可以创建自己的异常。

例8.5 用户自定义异常。

class lengthException(Exception): # 自定义异常必须继承 Exception 类 def __init__(self,length):

self.length=length

try:

x=input(" 请输入一个字符串:")

if(len(x)<4):

raise lengthException("字符串长度小于4")

except lengthException as le: #as 把一个类型当作一个对象

print(" 发生异常",le.length)

else:

print(" 没有发生异常")

这个例子中,我们自定义了一个异常lengthException, 继承于 Exception, 当用户输 入字符串长度小于4的时候,我们使用raise 抛出异常,但此时 raise 只负责抛出异常并没 有处理异常, except 代码块才负责处理异常。需要注意的是,系统自带的异常只要触发会 自动抛出,比如 NameError, 但用户自定义的异常需要用户自己决定什么时候抛出,自 定义异常需要继承 Exception 。就像我们这个例子一样,我们控制了它必须在用户输入字 符串长度满足条件时才能抛出异常提示信息。掌握好 Python 异常处理机制将有效提高程 序的健壮性、鲁棒性,请读者多查阅相关资料,上机实践。

习 题

1. 以下哪个因素会在程序执行时引发异常?注意这里我们问的并不是异常的原因。 (a) 用户

(b) 解释器

(c) 程序

(d) 以上所有

(e) 只有 (b) 和 (c)

(f) 只有 (a) 和 (c)

2. 关键字 try-except 和 try-finally 有什么不同?

3. 简单叙述一下什么是异常和错误。异常处理分为哪几个阶段?

4. 下面两段 Python 伪代码 (a) 和 (b) 有什么区别?考虑语句 A 和 B 的上下文 环境。

(a)try:

statement _A

except…:

else:

statement

(b)try:

statement statement

except…:

B

A

B

5. 输入一个数,打印输出这个数的平方,当用户输入不是一个整数的时候使用异常 处理提醒用户输入整数。

6. 将用户输入的数字作为索引从字符串alp 中返回一个字符,当用户输入非整数字 符时,except NameError异常被捕获到,提示用户输入类型错误,当用户输入数字不在0 到25 之间时,异常被 except 捕获,程序打印其他错误信息。

7. 编写程序,用户输入一个三位以上的整数,输出其百位上的数字,例如用户输入 1234,则程序输出12,如果用户输入的不是数字,则抛出异常输出you must input an integer, 如果输入的数字少于3位,则提示 you must input an integer of more than 3 digits。

8. 异常捕获,输入为两个数值,两数相加除以两数相减,出现异常请捕获,如没有 异常请输出具体值。

输入:1010

输出: Error

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_3.5 使用数据库
下一篇:打开《OpenStack 云平台-部署与高可用实战》_9.2.1 主机配置
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×