zoukankan      html  css  js  c++  java
  • 异常

    异常

    一,【异常】
    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'
    
    
  • 相关阅读:
    (转+原)python中的浅拷贝和深拷贝
    (原)torch7中添加新的层
    (原+转)ubuntu终端输出彩色文字
    (原)torch中显示nn.Sequential()网络的详细情况
    (原)python中使用plt.show()时显示图像
    eclipse 注释模板
    leetcode 11 最大盛水容器
    leetcode 9 回文数字
    leetcode8 字符串转整数
    利用Intent启动activity的例子
  • 原文地址:https://www.cnblogs.com/hanfei-1005/p/5704472.html
Copyright © 2011-2022 走看看