• python--异常处理


    一、格式  :try....except....finally

    try:
        s=10/0
    except ZeroDivisionError as e:
        print('走这里')
        print(e)
    
    def calc(a,b):
        try:
            res = a/b
        except ZeroDivisionError as e:
            res = '除数不能为零,%s'%e
            print(res)
        except TypeError as e:
            res = '类型错误,%s' % e
        except Exception as e:  # Exception捕捉所有的异常
            print(e)
    
    res = calc(10,1)
    calc('k',1)   #TypeError: unsupported operand type(s) for /: 'str' and 'int'
    calc(10,0)
    
    
    money = input('enter:')
    try:
        money = int(money)
    except Exception as e:#产生异常时执行
        print('输入金额错误')
    else:    #这个else和上面的try对应,没有出现异常时执行
        print(money+1)
    finally:
        print('不管是否出现异常都会执行')

    二、常见的异常信息

    AttributeError: 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
     
    IOError:输入/输出异常,一般是无法打开文件
     
    ImportError: 无法导入模块或包,一般是路径问题或名称错误
     
    IndentationError:代码没有正确对齐,属于语法错误
     
    IndexError:下标索引超出序列边界,比如x只有三个元素,却试图访问x[3]
     
    KeyError:试图访问字典里不存在的键
     
    KeyboardInterrupt:Ctrl+C被按下
     
    NameError:使用一个还未被赋予对象的变量
     
    SyntaxError: 语法错误
     
    TypeError: 传入对象类型与要求的不符
     
    UnboundLocalError:试图访问一个还未被设置的局部变量,一般是由于在代码块外部还有另一个同名变量
     
    ValueError: 传入一个调用者不期望的值,即使值的类型是正确的

    三、主动抛出异常

    主动抛出异常,就是我们在代码里面让它自动抛出一个异常,然后捕捉到,比如说我们在写自动化测试脚本的时候,结果和预期不符合,就可以主动抛出一个异常信息,然后捕捉到,做其他的处理,主动抛出异常使用raise关键字。

    try:
     
        raise KeyError     #主动抛出一个keyerror的异常
     
    except KeyError as e:
     
        print('这个是我主动抛出的异常')
  • 相关阅读:
    LeetCode 1
    Thinking in Java学习杂记(第7章)
    工程优化部分概念
    Thinking in Java学习杂记(5-6章)
    Thinking in Java学习杂记(1-4章)
    python中map()和dict()的用法
    JavaWeb高级编程(下篇)
    对CSDN的理性吐槽
    CSDN博客已经打不开了
    大连交大教务一键教学评价
  • 原文地址:https://www.cnblogs.com/HathawayLee/p/9949244.html
Copyright © 2020-2023  润新知