一.08异常

来源:互联网 发布:ubuntu双系统磁盘分区 编辑:程序博客网 时间:2024/05/18 00:12

一.Python异常类

NameError 尝试访问一个没有申明的变量

ZeroDivisionError 除数为0

SyntaxError 语法错误

IndexError 索引超出序列范围

KeyError 请求一个不存在的字典关键字

IOError 输入输出错误(比如你要读的文件不存在)

AttributeError 尝试访问未知的对象属性

ValueError 传给函数的参数类型不正确,比如给int()函数传入字符串形

二.捕获异常

try:      try_suite  except Exception1,Exception2,...,Argument:      exception_suite  ......   #other exception block  else:      no_exceptions_detected_suite  finally:      always_execute_suite  

try…except…语句
try捕获了任何异常,都将交给except子句的exception block来处理
try … except…else语句
就是当没有检测到异常的时候,则执行else语句
finally子句
finally子句是无论是否检测到异常,都会执行的一段代码。我们可以丢掉except子句和else子句,单独使用try…finally,也可以配合except等使用。

三.两个特殊的处理异常的简便方法

1.断言(assert)

assert语句用于检测表达式是否为真,如果为假,引发AssertionError错误;
语法格式:assert expression [,args]
expression:表达式
args:判断条件的描述信息

2.上下文管理(with语句)

with open(r'somefileName') as somefile:    for line in somefile:        print line        # ...more code

四.抛出异常(raise)

#!/usr/bin/python# -*- coding: UTF-8 -*-# 定义函数def mye( level ):    if level < 1:        raise Exception("Invalid level!", level)        # 触发异常后,后面的代码就不会再执行try:    mye(0)                // 触发异常except "Invalid level!":    print 1else:    print 2
#输出结果$ python test.py Traceback (most recent call last):  File "test.py", line 11, in <module>    mye(0)  File "test.py", line 7, in mye    raise Exception("Invalid level!", level)Exception: ('Invalid level!', 0)
原创粉丝点击