Python语言零基础入门——异常处理

目录

一、什么是异常

二、Python中常见的异常类型

三、try-except语句

四、raise关键字

五、练习题:简单计算器


一、什么是异常

  • 如果代码没有语法问题,可以运行,但会出运行时的错误,例如除零错误,下标越界等问题,这种在运行期间检测到的错误被称为异常
  • 出现了异常必须处理,否则程序会终止执行,用户体验会很差。
  • Phthon支持程序员自己处理检测到的异常。
  • 可以使用try-except语句进行异常的检测和处理。

二、Python中常见的异常类型

报错类型描述
AssertionError当assert断言条件为假的时候抛出的异常
AttributeError当访问的对象属性不存在的时候抛出的异常
IndexError超出对象索引的范围时抛出的异常
KeyError在字典中查找一个不存在的key抛出的异常
NameError访问一个不存在的变量时抛出的异常
OSError操作系统产生的异常
SyntaxError语法错误时会抛出此异常
TypeError类型错误,通常是不同类型之间的操作会出现此异常
ZeroDivislonError进行数学运算时除数为0时会出现此异常

三、try-except语句

  1. 首先执行try中 [代码块A],如果出现异常,立即终止代码执行,转而到except块中进行异常处理
  2. 异常处理except模块可以多个,从上往下匹配,如果能够匹配成功,立即执行相应的异常处理代码块,执行完毕后,不在往下匹配,转到3执行
  3. 执行异常处理完毕后,如果有finally字句则执行finally字句,如果没有则执行  [后续语句]
  4. 如果匹配不到异常,有finally则执行finally,然后则抛出错误,终止程序执行。
  5. 如果没有异常,如果有else字句则执行else字句,执行完else后,有finally字句则执行,没有则执行 [后续语句]
try:
    [代码块A]  # 可能会出错误的代码     异常检测
except Exception1[as e]:
    # 异常处理
    [代码块1]  # 异常处理代码
except Exception2[as e]:
    # 异常处理
    [代码块2]  # 异常处理代码
……
except Exceptionn[as e]:
    #异常处理
    [代码块n]  # 异常处理代码
[else:]
    # 可选,如果没有引发异常会执行     处理语句
[finally:]
    # 无论如何都要执行的语句     处理语句
    [后续语句]

举例:

try:
    # 有可能出现异常的代码
    n = int(input('请输入一个数字:'))
    n = 5 / n
    print(n)

except ZeroDivisionError as e:
    print('除数不能为0')
    print('原始报错信息',e)

except:
    print('请输入数字')
else:
    print('运行没有被except语句捕获,执行else模块')
finally:
    print('无论如何,都要执行finally模块')

运行结果:

# 输入非数字时的运行结果
请输入一个数字:cy
请输入数字
无论如何,都要执行finally模块

# 输入0时的运行结果
请输入一个数字:0
除数不能为0
原始报错信息 division by zero
无论如何,都要执行finally模块

# 输入数字时的运行结果
请输入一个数字:10
0.5
运行没有被except语句捕获,执行else模块
无论如何,都要执行finally模块

四、raise关键字

用途:手动抛出异常

# pwd = input('请输入密码:')
# if len(pwd) < 8:
#     print('密码太短,请输入8位以上的密码')
# else:
#     print('登录操作')

try:
    pwd = input('请输入密码:')
    if len(pwd) < 8:
        raise Exception('密码太短,请输入8位以上的密码')
except Exception as e:
    print(e)

运行结果:

请输入密码:517
密码太短,请输入8位以上的密码

五、练习题:简单计算器

while True:
    try:
        op = input('请输入一个四则运算算式(如:1+2):')
        if '+' in op:
            a = op.split('+')
            result = int(a[0]) + int(a[1])
            print(result)
        elif '-' in op:
            a = op.split('-')
            result = int(a[0]) - int(a[1])
            print(result)
        elif '*' in op:
            a = op.split('*')
            result = int(a[0]) * int(a[1])
            print(result)
        elif '/' in op:
            a = op.split('/')
            result = int(a[0]) / int(a[1])
            print(result)
        elif op=='C':
            print('感谢使用')
            break
        else:
            raise Exception('请按“1+2”格式输入算式')

    except ZeroDivisionError:
        print('注意:除数不能为0')
    except Exception as e:
        print(e)

运行结果:

请输入一个四则运算算式(如:1+2):123
请按“1+2”格式输入算式
请输入一个四则运算算式(如:1+2):2/0
注意:除数不能为0
请输入一个四则运算算式(如:1+2):1+2
3
请输入一个四则运算算式(如:1+2):C
感谢使用
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值