Python异常处理

1、try...except

我们写程序的时候,会出现一些错误或异常,导致程序终止。例如,做除法时,除数为0,会引起一个ZeroDivisionError,例如:

a=5
b=0
c=a/b
print(c)

#以上执行结果抛出异常:
Traceback (most recent call last):
  File "D:/test/Pythonlianxi/day8/异常处理.py", line 25, in <module>
    c=a/b
ZeroDivisionError: division by zero

程序因为ZeroDivisionError而中断了,语句print 没有运行。为了处理异常,我们使用try...except,更改代码:

a=10
b=0
try:
    c=a/b
    print (c)
except ZeroDivisionError as e:   #这个e代表错误信息,如果上面的两行代码出现了ZeroDivisionError这个错
  print(e)
  print('除数不能为0')

运行结果:

  division by zero
  除数不能为0

这样程序就不会因为异常而中断,从而print('除数不能为0')语句正常执行,我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except

捕获所有异常:如果不知道代码会发生什么样的异常,但是也想把异常捕捉到该怎么处理呢,可以使用Exception,这样代码就不会因为异常而终止运行,例如:

a=10
b=0
try:
    c=a/b
    print (c)
except Exception as e:#这个e代表错误信息,如果上面的两行代码出错
    print(e)
    print('出错了')

运行结果:

  division by zero
  出错了

2、try ....except...else 语句

当没有异常发生时,else中的语句将会被执行,else语句不是必须写的,也可以不写。例如:

a=10
b=5
try:
    c=a/b
    # print (c)
except Exception as e:#这个e代表错误信息,如果上面的两行代码出错
    print(e)
    print('出错了')
else:# 没有出错,也不是必须写的
    print('并没有出错')  # 这个是没有异常的时候走
    print(c)
运行结果:

  并没有出错
  2.0

3、try ...finally

无论异常是否发生,在程序结束前,finally中的语句都会被执行。例如:

出错了:

a=10
b=0
try:
    c=a/b
except Exception as e:#这个e代表错误信息,如果上面的两行代码出错
    print(e)
    print('出错了')
else:# 没有出错,也不是必须写的
    print('并没有出错')  # 这个是没有异常的时候走
    print(c)
finally:#不管出错或者没有出错都会执行它,也不是必须写的。
    print('我是finally')

运行结果:

  division by zero
  出错了
  我是finally

没有出错:

a=10
b=5
try:
    c=a/b
except Exception as e:#这个e代表错误信息,如果上面的两行代码出错
    print(e)
    print('出错了')
else:# 没有出错,也不是必须写的
    print('并没有出错')  # 这个是没有异常的时候走
    print(c)
finally:#不管出错或者没有出错都会执行它,也不是必须写的。
    print('我是finally')

运行结果:

  并没有出错
  2.0
  我是finally

 

posted @ 2018-05-18 16:04  唯安格  阅读(202)  评论(0编辑  收藏  举报