Python学习系列之异常处理

什么是异常处理

python内置了一套try···except···finally的错误处理机制

当程序出错的时候进行捕捉,然后根据捕捉到的错误信息进行响相应的处理

常用的内建异常

初识异常处理

如例

让用户进行输入,提示用户输入一个数字,如果用户输入的是数字就转换成int类型,然后打印用户输出的数字,如果用户输入的不是数字,就会转换出错,如果出错就提示用户输入的类型错误

try:
    n = int(input("请输入一个数字>>>"))
    print('你输入的是数字',n)
except Exception as e:
    print('输入类型错误,你应该输入数字')
finally:
    print('------end------')

测试

正确:
请输入一个数字>>>12
你输入的是数字 12
------end------

错误: 请输入一个数字>>>aaaaa 输入类型错误,你应该输入数字 ------end------

分析:

当我们认为某些代码可能会出错时,就可以用try来运行这段代码

如果执行出错,则后续代码不会执行,而是直接跳转至错误处理代码,即except语句块

执行完except后,如果有finally语句块,则执行finally语句块,至此执行完毕

对不同的异常进行不同的处理

try:
    n = int(input("请输出一个数字>>> "))
except ValueError as e:
    print("ValueError错误")
except Exception as e:
    print("出现异常")

执行测试

请输出一个数字>>> 123
ansheng@Darker:~$ python3 /home/ansheng/文档/Python_code/sublime/Week06/Day04/s2.py
请输出一个数字>>> asd
ValueError错误

在处理异常时,如果出现错误,那么会首先匹配ValueError,然后再匹配Exception

捕捉多个错误

try:
    raise IndexError('出错了')
except (IndexError, NameError) as e:  # 捕获括号内的错误,并把错误信息赋值给e(一个except可以处理多个异常,这些异常将被放在一个括号里成为一个元组)
    print(e)

错误异常的基本结构

try:
    # 主代码块
    pass
except KeyError as e:
    # 异常时,执行该块
    pass
else:
    # 主代码块执行完,执行该块
    pass
finally:
    # 无论异常与否,最终执行该块,这块可有可无
    pass

执行流程

  • 如果出现错误,那么就执行except代码块,然后再执行finnly代码块
  • 如果没有出现错误,那么就执行else代码块,然后再执行finnly代码块
  • 无论有没有异常都执行finnly代码块

主动抛异常

try:
    # raise表示主动出发异常,然后创建一个Exception对象,Exception括号内的值就是Exception对象的值
    raise Exception("主动出发的异常")
except Exception as e:
    # 输出Exception对象的值
    print(e)

执行测试

主动出发的异常

 

posted @ 2017-02-07 16:57  差点点温柔  阅读(406)  评论(0编辑  收藏  举报