Python---异常(try)

try

try:
    # 不能确定正确执行的代码
    num = int(input('请输入一个数字:'))
except:
    print('请输入正确的整数!!!')
print('*' * 50)

异常

 num = int(input('请输入一个整数:'))
 result = 8 /num
 print(result)

输入0的时候,会出现ZeroDivisionError报错
则使用try,expect,手动将报错的内容,显示出自己写的内容

ZeroDivisionError :除数为0的错误
Exception:未知错误
ValueError:将一个与数字无关的类型转换为整数的报错


num = int(input('输入数字:'))
print('*'*50)

try:
    num = int(input('请输入一个整数:'))
    result = 8 /num
    print(result)
except ZeroDivisionError:
    print('0不能做除数')


except ValueError:
    print('请输入正确的值')


except Exception as r:
    print('未知错误!')  

else,finally


 else:程序没有碰到致命的错误 就执行else
 finally:无论是否遇到异常都会执行


try:
    num = int(input('请输入一个整数:'))
    result = 8/num
    print(result)
except Exception as r:
    print('未知错误!')
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():
    pwd = input('请输入密码:')# 1.提示用户输入密码
    if len(pwd) >=8: # 2.判断密码的长度
        return pwd
    #这两句相当于直接写print('主动抛出异常')
    # else:
    #     print('主动抛出异常')  
    print('主动抛出异常')# 3.如果<8就主动抛出异常
    ex = Exception('密码长度不够,必须大于8位') # a.创建异常对象
    raise ex # b.主动抛出
# 注意:只抛出而不捕获 代码会报错
try:
    print(input_passwd())
except Exception as re:
    print(re)

如果只写raise,会显示No active exception to reraise,
raise ex:会抛出异常,即显示'密码长度不够,必须大于8位'

可以理解为提前预言 让人更好的知道错误原因
assert:断言


def func(num,div):
    assert (div !=0),'div不能为0'
    return num/div

print(func(10,0))  ##会报错AssertionError
print('%%%')

assert:
后面为一个判断语句,加报错提示
如果判断语句为真,则执行报错信息
如果为假,则执行返回值return

print(fun(10,1))
print('%%%')

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值