Python 异常处理

python 异常处理时raise的使用

raise的作用:

在使用try … except … finally 结构来处理异常的过程中,可以分为两种情况:

  • 不使用raise:程序记录异常,但正常执行下面的语句,直到结束

  • 使用raise:raise语句会抛出错误的实例,同时打断程序的执行,在这一类下面也分两种情况:

    1. 其如果不带参数,就会把当前错误原样抛出
    2. 若其带参数,则可以将当前错误类型转化成另一种错误类型抛出

实例:

1. 不使用raise:

# -*- coding: utf-8 -*-
'''
功能:不使用raise,测试程序运行情况
作者:smileZenvo
'''

def example(inpute):
    try:
        result = 10 / inpute
    except Exception, e:
        print Exception, ':', e
    a = 10
    print 'a =', a
if __name__ == '__main__':
    example(0)

运行结果:

这里写图片描述

结果分析:

  1. 不使用raise抛出异常,而是在except后面自己打印所带的异常
  2. 程序并不会被终止,后面变量a的赋值和打印正常执行

2. 使用raise:

2.1 不带参数:

# -*- coding: utf-8 -*-
'''
功能:使用raise(不带参数),测试程序运行情况
作者:smileZenvo
'''

def example(inpute):
    try:
        result = 10 / inpute
    except Exception, e:
        print Exception, ':', e
        raise
    a = 10
    print 'a =', a
if __name__ == '__main__':
    example(0)

运行结果:

这里写图片描述

结果分析:
1. 程序在raise抛出异常后停止运行,并没有执行下面的变量a的赋值和打印
2. raise抛出了函数的异常,与我们自己打印的异常相同,均为integer division or modulo by zero, 即:0被除了

2.2 带参数:

# -*- coding: utf-8 -*-
'''
功能:使用raise(带参数),测试程序运行情况
作者:smileZenvo
'''

def example(inpute):
    try:
        result = 10 / inpute
    except Exception, e:
        print Exception, ':', e
        raise ValueError
    a = 10
    print 'a =', a
if __name__ == '__main__':
    example(0)

运行结果:
这里写图片描述

结果分析:
使用raise抛出异常且带参数时,我们发现:
1. 程序在raise抛出异常后停止运行,并没有执行下面的变量a的赋值和打印
2. 带参数时,raise会不管函数的异常,直接抛出参数所带的异常(如: 这里的异常应该是0不能被除,但却抛出的raise后面的value异常)
3. 所以在使用带参数时要注意,一般raise后面带参数,可以抛出我们自己定义的异常类型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值