Python异常处理

软件程序在运行过程中,非常可能出现异常,比如:程序在运行中,突然内存或硬盘满了;为了增加程序的健壮性,在遇到意外情况(出现异常)时让程序做出合理的处理,在编写程序时需要考虑如何处理异常情况。

异常机制本质:当程序出现异常,程序安全的退出,处理完后继续执行的机制。

python中一切都是对象,异常也采用对象的方式来处理。处理过程:

1、抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给解释器。

2、捕获异常:解释器得到该异常后,寻找相应的代码来处理该异常。 

异常的示例

下面代码首先从控制台读取字符串,并将字符串转化为 int 数据类型,接着打印输入的数字,并将打印5除以该数字。当输入数字 0 程序会发生错误 ZeroDivisionError: division by zero ,输入字符串时程序会发生错误 ValueError 。

示例代码如下

i = int(input("请输入数字:"))
print(i)
print(5/i)

代码运行结果

示例代码如下(该程序只有当输入数字 66 时程序才会退出,否则将一直执行,且当输入的不是数字时会打印异常信息)

while True:
    try:
        x = int(input("请输入一个数字(输入66时程序退出):"))
        print("输入的数字是:",x)
        if x == 66:
            print("程序退出")
            break
    except Exception as e:
        print("异常,输入的不是数字!")
        print(e)

代码运行结果

请输入一个数字(输入66时程序退出):88
输入的数字是: 88
请输入一个数字(输入66时程序退出):CSDN
异常,输入的不是数字!
invalid literal for int() with base 10: 'CSDN'
请输入一个数字(输入66时程序退出):
异常,输入的不是数字!
invalid literal for int() with base 10: ''
请输入一个数字(输入66时程序退出):66
输入的数字是: 66
程序退出

异常类继承层次

BaseException    # 所有异常的基类
 +-- SystemExit    # 解释器请求退出
 +-- KeyboardInterrupt     用户中断执行(通常是输入^C)
 +-- GeneratorExit    # 生成器(generator)发生异常来通知退出
 +-- Exception    # 常规异常的基类
      +-- StopIteration    # 迭代器没有更多的值
      +-- StandardError    # 标准错误
      |    +-- BufferError
      |    +-- ArithmeticError
      |    |    +-- FloatingPointError
      |    |    +-- OverflowError
      |    |    +-- ZeroDivisionError
      |    +-- AssertionError
      |    +-- AttributeError
      |    +-- EnvironmentError
      |    |    +-- IOError
      |    |    +-- OSError
      |    |         +-- WindowsError (Windows)
      |    |         +-- VMSError (VMS)
      |    +-- EOFError
      |    +-- ImportError
      |    +-- LookupError
      |    |    +-- IndexError
      |    |    +-- KeyError
      |    +-- MemoryError
      |    +-- NameError
      |    |    +-- UnboundLocal
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邂逅自己

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值