文章目录
- 1.断言
- 2.自定义异常
1.断言
- 使用assert可以判断一个条件是否成立,如果成立则继续执行后面的语句;
如果不成立则会引发AssertionError异常 - eg:
for i in range(2):
try:
num=int(input('请输入一个数字:'))
assert num!=0#若不成立,则会直接输出
print(10/num)
except AssertionError:
print('断言失败!')
执行结果如下:
请输入一个数字:0
断言失败
请输入一个数字:10
1.0
2.自定义异常
- 自定义异常,实际上就是以BaseException类作为父类创建一个子类。
- eg:
class ScoreError(BaseException): #以BaseException类作为父类创建ScoreError类
def __init__(self,msg): #定义构造方法,init方法
self.msg=msg#用参数msg的值,去初始化新创建对象的msg属性
def __str__(self): #定义__str__方法,将ScoreError类对象转换为字符串时自动调用
return self.msg
if __name__=='__main__':
for i in range(2): #循环2次
try:
score=int(input('请输入一个成绩:'))
if score<0 or score>100:
raise ScoreError('输入成绩为%d,成绩应在0-100之间'%score)#该字符串会被传入ScoreError类的构造函数
print('输入成绩为%d'%score)
except ScoreError as e:#ScoreError的对象e,将其作为参数,用print来输出,
#此时,会自动执行ScoreError的内置方法str,将e中的msg属性拿到并返回,输出的是e中的msg属性
print('分数错误:',e)
执行结果如下:
请输入一个成绩:90
输入成绩为90
请输入一个成绩:-1
分数错误: 输入成绩为-1,成绩应在0-100之间