python 异常处理 try

异常

我们常见的代码错误后 会出现此类异常

SyntaxError:语法错误

AttributeError:属性错误
IndexError:索引错误
TypeError:类型错误

NameError:变量名不存在错误

KeyError:映射中不存在的关键字(键)的错误

ValueError:值错误

异常本身就是一个类,所有的类都继承于BaseException类

SystemExit:退出异常
KeyboarInterrupt:键盘打断
GeneratorExit:生成器退出
Exception:普通异常 --------- 上面的常见异常都是Exception的子类

查看异常结构

print(help(NameError))

错误回溯

点击蓝色文字

print(a)

异常捕捉

语法结构
try:
    # 可能出现错误的代码
except Exception(可以写其他异常类型,如果多个异常类型,需放元组里) as e:
    # 捕捉到异常的处理方案
else:
    # 没有异常时执行
finally:
    # 不管是否出现异常都会执行
简单使用 
try:
    print(a)
except Exception as e:
    print(e)


# name 'a' is not defined
try:
    print(1)
except Exception as e:
    print(e)
else:
    print(2)
finally:
    print(3)


# 1
# 2
# 3
try:
    print(a)
except Exception as e:
    print(e)
else:
    print(2)
finally:
    print(3)


# name 'a' is not defined
# 3

raise

主动抛出异常

try:
    num = input('请输入一个数值:')
    if not num.isdigit():
        raise ValueError('num必须为纯数字')
    print(f'数字是{num}')

except Exception as e:
    print(e)



# 如果输入  1234  那么就会输出 数字是1234
# 如果输入  qwer  那么就会输出 num必须为纯数字
自定义异常 -- 小游戏
def number():
    print('小游戏')
    print('请输入1~10的数字字母,如果长度正确,则游戏胜利,否则输了')
    a = input('请输入:')
    if len(a) == 7:
        print('游戏胜利')
    else:
        raise Exception('游戏失败')

while True:
    try:
        number()
        break
    except Exception as e:
        print(e)

assert

断言,强制要求一个条件满足

assert 条件,  '抛出自定义异常'

def user():
    assert 10 < 1, '错误,10是大于1的'
    print('123')     # 只有上面满足,这行代码才会执行

try:
    user()
except Exception as e:
    print(e)


# 错误,10是大于1的
def func(passwd):
    assert 12 > len(passwd) > 6, '密码过长或过短'
    print('密码正常')

try:
    a = input('请输入密码:')
    func(a)
    print(123)      # 上面没通过,这一行也不会执行
except Exception as e:
    print(e)


# 输入 7-11位数才正常,否则抛出异常

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值