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'
    
    
  • 相关阅读:
    005 Eureka的HA机制和保护模式
    004 完善微服务信息
    003 注册微服务
    002 搭建单机的Eureka服务端
    001 项目的基础配置
    002 分支操作
    001 GIt的基本操作
    004 流程历史
    签名时出错: 未能对 binDebugapp.publishxxxx .exe 签名
    远程桌面无法复制粘贴传输文件解决办法
  • 原文地址:https://www.cnblogs.com/hanfei-1005/p/5704472.html
Copyright © 2011-2022 走看看