在执行程序时,异常报错提示可能会影响到输出结果的显示,此时就可以使用try:…except:…进行异常处理,将错误直接输出打印,而不是以报错的形式显示。
常见的异常情况
一、类型错误
try:
# 不能确定正确执行的代码
num = int(input('请输入一个数字:'))
except:
print('请输入正确的整数!!!')
print('*' * 50)
二、0做除数
try:
num = int(input('请输入一个整数:'))
result = 8 /num
print(result)
except ZeroDivisionError:
print('0不能做除数')
# except ValueError:
# print('请输入正确的值')
except Exception as r:
print('未知错误!')
# num = int(input('请输入一个整数:'))
# result = 8 /num
# print(result)
# """
# 程序没有碰到致命的错误 就执行else
# """
else:
print('hello')
finally:
# 无论是否遇到异常都会执行
print('!!!!')
三、主动抛出异常情况
函数的错误:一级一级向上去找 最终会将异常传递到主函数里面去
def demo1():
try:
return int(input('请输入正确的整数:'))
except Exception as r:
print('未知错误 %s' %r)
def demo2():
return demo1()
print(demo2())
四、主动抛出异常情况(输入正确的密码)
主动抛出异常
需求:提示用户输入密码 如果长度小于8位 就抛出异常
def input_passwd():
# 1.提示用户输入密码
pwd = input('请输入密码:')
# 2.判断密码的长度
if len(pwd) >=8:
return pwd
# 3.如果<8就主动抛出异常
print('主动抛出异常')
# a.创建异常对象
ex = Exception('密码长度不够,必须大于8位')
# b.主动抛出
raise ex
# 注意:只抛出而不捕获 代码会报错
try:
print(input_passwd())
except Exception as re:
print(re)
五、断言
可以理解为提前预言 让人更好的知道错误原因
def func(num,div):
assert (div !=0),'div不能为0'
return num/div
print(func(10,0))
print('%%%')
当0作除数时: