异常

异常

一,【异常】
Try/expect 捕捉由python或你引发的异常并恢复
Try/finally 无论异常是否发生,执行清理行为
Raise 手动在代码中触发异常
Assert 有条件地在程序代码中触发异常
二【异常类型】
AssertionError assert语句失败
AttributeError 试图访问一个对象没有属性
IOError 输入输出异常,基本上是无法打开文件
ImportErrot 无法引入模块或者包,基本上是路径问题
IndentationEError 语法错误,代码没有正确的对奇
IndexError 下表索引超出序列边界
KeyError 试图访问你下标里不存在的健
KeyboardInterrupt CTRL+C被按下
NameError 使用一个还未赋予对象的变量
SyntaxError python代码逻辑语法出错,不能执行
TypeError 传入的对象类型与要求不符
UnboundLocalError 试图访问一个还为设置的全局变量,基本上是由于另外一个同名的全局变量导致你认为在访问
ValueError 传入一个不被期望的值,即使类型正确

下面我们通过例子来看一下:

#!/usr/bin/python
while True:
    try:
        x=input('please input the number:')
        y=input('please input the number:')
        value=x/y
        print value
    except:
        print 'invalid input,please try again'
    else:
        break

这里的循环只有没有异常的时候才会退出(由else字句中的break语句退出),只要有错误发生,程序就会要求重新输入

编写自己的异常

一个异常就是一个类,即类Exception的一个子类,现在编写UppercaseException,在一个字符串中碰到大写字母会被抛出

>> class UppercaseException(Exception):
...     pass
... 
>>> words=['eeenie','meenie','MO']
>>> for word in words:
...     if word.isupper():
...             raise UppercaseException(word)
... 
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
__main__.UppercaseException: MO

即使没有定义UppercaseException的行为,也可以通过继承父类的Exception在抛出异常时输出错误提示。
我们创建了我们自己的异常类型,其实我们可以使用任何预定义的异常/错误。这个新
的异常类型是ShortInputException类。它有两个域——length是给定输入的长度,atleast则是程序期望的最小长度。
在except从句中,我们提供了错误类和用来表示错误/异常对象的变量。这与函数调用中的形参
和实参概念类似。在这个特别的except从句中,我们使用异常对象的length和atleast

#!/usr/bin/python
class ShortError(Exception):
    def __init__(self,length,atleast):
        Exception.__init__(self)
        self.length=length
        self.atleast=atleast
try:
    s=raw_input('please input your want to input:')
    if len(s)<3:
        raise ShortError(len(s),3)
except EOFError:
    print 'false'
except ShortError,x:
    print 'xiao'
else:
print 'vv'

posted @ 2016-07-25 18:03  夏日花开  阅读(177)  评论(0编辑  收藏  举报