Python学习之Part14.异常

1.程序中的异常

  1. 异常
    异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下:
    在这里插入图片描述

  2. 异常处理
    python中对异常处理的方式有2种:
    1). python解释器检测到错误,触发异常(也允许程序员自己触发异常)。
    2). 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关),如果捕捉成功则进入另外一个处理分支,执行程序员自定义的语句,使程序不会崩溃,这就是异常处理。

  3. 异常处理的方式
    在python中,我们可以使python提供的特定的语法结构来进行异常处理:
    1). 基本语法

try:
 被检测的代码块
except   异常类型:
  try中一旦检测到异常,就执行此语句块内容

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

运行结果如下:
在这里插入图片描述
 2). 单分支语句
单分支只能用来处理指定的异常情况,如果未捕获到异常,则报错

try:
 被检测的代码块
# 我们可以使用except与as+变量名 搭配使用,打印变量名会直接输出报错信息
except 异常名称 as e:
 print(e)

try:
    a
except NameError as e:
    print(e)

输出结果如下:
在这里插入图片描述
 3). 多分支语句

try:
 被检测的代码块
except 异常名称:
  执行此语句块内容
except 异常名称:
  执行此语句块内容

try:
    num = int(input('Num:'))
    result = 8 / num
    print(result)
except ZeroDivisionError:
    print('0不能做除数')
except ValueError:
    print('请输入正确的值')

运行结果:
在这里插入图片描述
在这里插入图片描述
 4). 万能异常
在python的异常中,有一个万能异常:Exception,他可以捕获任意异常。
当存在Exception语句,且不是except中的异常时,其他异常都执行Exception语句块的内容:

try:
 被检测的代码块
except 异常名称:
  执行此语句块内容
except 异常名称:
  执行此语句块内容
except Exception:
  对于不属于以上异常的任意异常,执行此语句块内容

try:
    num = int(input('Num:'))
    result = 8 / num
    print(result)
except ZeroDivisionError:
    print('0不能做除数')
except Exception as r:
    print('未知错误!!')

运行结果如下:
在这里插入图片描述
在这里插入图片描述
 5). try…else语句

try:
 被检测的代码块
except 异常名称:
  执行此语句块内容
except 异常名称:
  执行此语句块内容
except Exception:
  对于不属于以上异常的任意异常,执行此语句块内容
else:
 若程序运行没有异常,则最终执行else语句块内容

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

运行结果如下:
在这里插入图片描述
遇到异常则终止
在这里插入图片描述
 6). try…finally语句

try:
 被检测的代码块
except 异常名称:
  执行此语句块内容
except 异常名称:
  执行此语句块内容
except Exception:
  对于不属于以上异常的任意异常,执行此语句块内容
else:
 若程序运行没有异常,则最终执行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:
    print('else!')
finally:
    print('Finally!')

执行结果如下:
在这里插入图片描述
在这里插入图片描述
练习:用户可以一直输入数字, 当遇到异常KeyboardInterrupt (也就是ctrl+c) 之后计算所有数的和

result = 0
while True:
    try:
        num = int(input('Num:'))
        result += num
    except KeyboardInterrupt:
        print('运行结果:',result)
        break

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值