Python中的异常及异常的处理

90 篇文章 2 订阅

1. 什么是异常

程序运行时发生的错误的信号。

2. 常见的异常

变量未定义

print(a)
NameError: name 'a' is not defined

索引溢出

str = 'hello'
print(str[10])
IndexError: string index out of range

0不能作为除数

print(10/0)
ZeroDivisionError: division by zero

字典的keyerror

d = dict(a=1,b=2)
d = {
‘a’:1,
‘b’:2
}
print(d.get(‘c’,‘key不存在’)) 
print(d.get(‘c’)) 
print(d[‘c’])
KeyError: ‘c’

3. 异常的捕获

这是一种更温和的方法 当不确定用户输入的内容时 我们不能直接把报错留给用户 而选择这种方法去解决异常

3.1 try和except

try:
    # 不能确定正确之行的代码
    num = int(input('请输入一个数字:'))
    print(num)
except:
    # try里面的代码如果有异常/错误 才会之行以下代码
    print('请输入正确的整数!!!!')

print('*' * 50)

输出结果:

请输入一个数字:aaa
请输入正确的整数!!!!
**************************************************

3.2 try except else finally的综合使用

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

try:
    num = int(input('Num:'))
    result = 8 / num
    print(result)
except ZeroDivisionError:
    print('0不能做除数')
# except ValueError:
#     print('请输入正确的值')
except Exception as r:
    print('未知错误!!')

# 程序没有碰到致命错误 就执行else
else:
    print('hello')
finally:
    # 无论是否遇到异常都会执行
    print('!!!!')

输出结果:

Num:aaa
未知错误!!
!!!!
Num:0
0不能做除数
!!!!
Num:2
4.0
hello
!!!!

4. 函数的错误

函数的错误:一级一级向上去找 最终会将异常传递到主函数里面去

def demo1():
    try:
        return int(input('请输入正确的整数:'))
    except Exception as r:
        print('未知错误 %s' %r)
def demo2():
    return demo1()

print(demo2()

输出结果:

请输入正确的整数:aaa
未知错误 invalid literal for int() with base 10: 'aaa'
None

5. 抛出异常

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)

输出结果:

请输入密码:123456
主动抛出异常
密码长度不够,必须大于8
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值