Python异常处理

原创来源 :Python异常处理_weixin_42566251的博客-CSDN博客icon-default.png?t=LA92https://blog.csdn.net/weixin_42566251/article/details/96503352

Python异常处理

原创weixin_42566251 发布于2019-07-19 21:32:39 阅读数 16  收藏
展开
一、什么是异常?

异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。

一般情况下,在Python无法正常处理程序时就会发生一个异常。

异常是Python对象,表示一个错误。

当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

二、异常处理

捕捉异常可以使用try/except语句。

try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

如果你不想在异常发生时结束你的程序,只需在try里捕获它。

语法:
以下为简单的try…except的语法:

try:
尝试执行的代码
except:
出现错误的处理
代码块:

try:
    num = int(input('请输入一个数字: '))
except:
    print('请输入正确的整数')
1
2
3
4
程序及运行结果:


try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。

如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。

如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

二、异常练习(try…finally语句)

需求:
1.提示用户输入一个整数
2.使用8来除以用户输入的数
try:
尝试执行的代码
except 错误类型1:
出现错误1的处理方式
except 错误类型2:
出现错误2的处理方式

代码块:

try:
    num = int(input('请输入一个整数: '))
    result = 8 / num
    print(result)

except ValueError:
    print('输入的值不是合法的整数')

except ZeroDivisionError:
    print('0不能做除数')

except Exception as r:
    print('未知错误 %s' %(r))

finally:
    print('~~~~~~~~~~~~')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
程序及运行结果:


注意:try-finally 语句无论是否发生异常都将执行最后的代码。

三、触发异常

我们可以使用raise语句自己触发异常

raise语法格式如下:

raise [Exception [, args [, traceback]]]
语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。

最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

实例:
一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。

定义一个异常非常简单,如下所示:

def input_passwd():
    pwd = input('请输入密码: ')

    if len(pwd) >= 8:
        return pwd

    print('主动抛出异常')
    ex = Exception('密码长度不足!')
    raise ex

try:
    print(input_passwd())
except Exception as r:
    print(r)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
程序及运行结果:


注意:为了能够捕获异常,"except"语句必须有用相同的异常来抛出类对象或者字符串。

点赞
————————————————
版权声明:本文为CSDN博主「weixin_42566251」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42566251/article/details/96503352

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值