python中关于异常处理的练习题:
- python中用来抛出异常的关键字是(C)
A.try B.except C.raise D.finally - ( C )类是所有异常类的父类
A.Throwable B.Error C.Exception D.BaseException - 对于except字句的排列,下列哪种是正确的( C )
A.父类在先,子类在后
B.子类在先,父类在后
C.没有顺序,谁在前谁先捕获
D.先有子类,其他如何排列都无关 - 在异常处理中,如释放资源、关闭文件、关闭数据库等由( C )来完成。
A.try字句 B.catch子句 C.finally字句 D.raise子句 - 当方法遇到异常又不知如何处理时,下列哪种说法是正确的( B )
A.捕获异常 B.抛出异常 C.声明异常 D.嵌套异常 - 自己动手编写一个列表越界的异常。
list_1=[1,2,3,4]
print('list_1[20]')
- 在练习6的基础上,用finally语句,实现如果抛出异常就输出index out of bound!
list_1=[1,2,3,4]
try:
print(list_1[20])
finally:
print('index out of bound!')
- 在练习7的基础上,用except语句
list_1=[1,2,3,4]
try:
print(list_1[20])
except:
print('index out of bound!')
- 编写代码,运算a/b,先判断b是不是等于零,如果b等于零,抛出分母为零异常。
def yunsuan(a,b):
if b==0:
raise Exception('分母为零')
else:
print('a/b')
- 编写代码,调用CCircle方法,计算圆的面积。并且自己定义一个异常类,如果半径为负值,抛出自己定义的异常。
import math
def RadioError(Exception):
def __init__(self,info):
self.info=info
def show(self)
print(self.info)
def CCircle(r):
if r<0:
raise RadiosError('半径为负值')
else:
print(math.pi*(r**2))
- 从命令行得到5个整数,放入一列表中,然后打印输出,要求:如果输入数据不为整数,要捕获产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(越界),显示“请输入至少5个整数”。
list_1=[]
for i in range(5):
try:
j=int(input('请输入一个整数:'))
except:
print('请输入整数!')
else:
list_1.append(j)
if len(list_1) != 5:
raise Exception ('请输入至少五个整数!')
- 写一个方法sanjiao(a, b, c),判断三个参数是否能构成一个三角形,如果不能则抛出异常IllegalArgumentException,显示异常信息a,b,c”不能构成三角形”,如果可以构成则显示三角形三个边长,在方法中得到命令行输入的三个整数,调用此方法,并捕获异常。
def sanjiao(a,b,c):
if a+b>c and a+c>b and b+c>a:
print(a,b,c)
else:
raise IIlegalAargumentException('不能构成三角形')
sanjiao(3,4,5)
sanjiao(1,4,5)
以上代码可以实现,但是下面这个不能实现,目前还没找到原因,不知道为啥。
def sanjiao(a,b,c):
if a+b>c and a+c>b and b+c>a:
print(a,b,c)
else:
raise IIlegalAargumentException('%s,%s,%s不能构成三角形',a,b,c)
i=input('给一个边长:')
j=input('再给一个边长:')
k=input('还有一个边长:')
sanjiao(i,j,k)