python分析与总结_python中异常报错的总结分析与处理方式

想必到现在经过python基础的学习之后,小伙伴们都已经开始写很多脚本了,有大的有小的,但是有的时候并不是所写的能够顺利跑出结果来,期间会有不但的报错以及异常,很多我们都不理解,所以也就不会修改,这是写脚本中常遇到的问题,虽然在当时被定型为绊脚石,但是多次遇到异常后我们会发现这是一笔不可多得的财富。对个人的成长有很大的帮助。

今天呢,我们总结了一下经常遇到的异常报错,以及处理方式。

常见异常类型及描述

那么既然知道了以上的所有报错,我们得知道怎么处理吧,接下来要说的异常报错的处理。

异常处理:捕捉异常

raise语句:

格式: raise [exceptionType[,argument][,traceback]]

为了调用raise,可以用一个类或者实例的参数来调用。

try/except 语句:

我们先用一个例子来分析这个问题。

首先在交互界面,我们可以按下面输入并得出,10除以2等于5,但是当你10除以0的时候,就会报错ZeroDivisionError,这个我们可以理解,按照数学中定义,分母不可以为0。(除非你不知道。如果真不知道的话,你最好找你小学数学老师谈谈心!)

>>> 10//2

5

>>> 10//0

Traceback (most recent call last):

File "", line 1, in

10//0

ZeroDivisionError: integer division or modulo by zero

那么问题来了,当你的程序会循环不断的得出数据,总共10000组吧,但是其中第4000多组的数据,有个分母为0的,就会报错,你的整个程序就会终止,导致你得不到你需要的数据,遇到这种情况了改怎么办?

拿就需要用到try/except了,遇到报错可以让程序按照你的要求输出内容并且程序不会终止。别着急,先看代码!

try:

x = raw_input('enter the first number: ')

y = raw_input('enter the second number: ')

print int(x) / int(y)

except ZeroDivisionError:

print "the second number can not be zero!"

except ValueError:

print 'Invalid input ,pls try again.'

输出结果:

enter the first number: 10

enter the second number: 2

5

enter the first number: 10

enter the second number: 0

the second number can not be zero!

enter the first number: 10

enter the second number: ww

Invalid input ,pls try again.

对,你没看错,分母为0 甚至随便写个字母,程序都不会报错,而且都会按照你设定的输出来显示,这个逻辑很有用,是你写程序路上的一种捷径!

try/except +else语句 或者 +finally子句.

try:

1/0

except NameError:

print "Unknown variable"

else:

print "That went well"

finally:

print "clean up."

输出结果:

clean up.

Traceback (most recent call last):

File "C:\Users\xdong\Desktop\tiaojian.py", line 2, in

1/0

ZeroDivisionError: integer division or modulo by zero

当然try/except else finally是可以卸载一起也可以分开来写,没有必要死按照上文的例子来那样子写,灵活一点。

上例子是finally子句肯定会被执行,不管try子句是否发生异常,在程序崩溃之前。其实finally 已经run 完了。

定义异常:

如果你发现以上没有你需要的异常类型,你可以自己尝试着自己定义异常,满足自己的需求。

classNetworkerror(RuntimeError):

def __init__(self, arg):

self.args = arg

try:

raiseNetworkerror("Bad hostname")

exceptNetworkerror,e:

print e.args

全文总结:

最后我们总结一下全文所说的异常类型用法,可能会给你一个清晰明了的认识。

格式1

try:

正常的操作

except:

发生异常,执行这块代码

else:

如果没有异常执行这块代码

格式2

try:

正常的操作

except(Exception1[,Exception2[,...ExceptionN]]]):

发生以上多个异常中的一个,执行这块代码

else:

如果没有异常执行这块代码

格式3

try:

finally:

#退出try时总会执行

raise

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值