• 7、python全栈之路-异常处理


    七、异常处理

    http://www.cnblogs.com/Eva-J/articles/7281240.html

    1、异常处理

    #处理异常

    #排错的时候 真正报错的是最下面

    #python的代码是不会出错的,应该从下向上找最后一行自己写的代码去处理

    #异常处理的应用:

    #1.可以用if规避,但是成本太高。

    #2.不能用if处理了  StopIteration

    if 是预防异常出现的

    try是异常出现之后

    #异常处理的特点:一旦发生异常,程序就不再执行

    2try...except

    2.1 单个错误

    try:
        num = input('num : ')
        int(num)      #ValueError
        print(num)
    except ValueError:
        print('请输入一个数字')

     

    #放在try中的代码如果遇到except中的错误类型,就会执行except中的代码

    #且一旦发生异常,try中的代码会停止在异常处

    #但不影响try语句之外的代码执行

    #一种错误类型只能处理对应的一种错误,其他错误还会照常报错

    2.2 多个错误

    try:
        num = input('num : ')
        int(num)  # ValueError
        print(num)
        a
        sum(1, 2, 3)
    except ValueError:
        print('请输入一个数字')
    except NameError as nameerror:
        print('产生了一个%s'%nameerror)
    except TypeError:
        print('又一个错误诞生了')

     

    3ecxept..as...

    显示错误具体信息

    # 在我们不能完全明确的知道这个错误到底是发生了什么的时候

    # 就用as 变量名,将变量中存储的错误信息打印出来

    3.1 ecxept..as...

     

    3.2 except Exception as e

    万能异常

    #对于你已经可以预见的但是不能完全规避的必须要处理的异常,

    #你应该去指定他的处理方式

    #对于其他你不能预料的,在使用万能异常处理

    try:
        l = []
        l[1000]   #IndexError
        l = [1,23]
        l_iterator = iter(l)
        next(l_iterator)
        next(l_iterator)
        next(l_iterator)  #StopIteration
    except ValueError:
        print('请输入一个数字')
    except Exception as e:
        print(e)

     

    4else语句

    try语句中不会发生异常的时候就执行else中的代码

    try:
        a =1
    except NameError as e:
        print(e)
    else:
        print('当try语句中不会发生异常的时候执行else中的代码啦')

     

    5finally

    在函数里面即使有return也会执行finally里的语句,finally里的语句最后执行

    def func():
        try:
            f = open('file')
            int(f.read())
        except ValueError as e:
            a = 123
            print(456)
            return a
        finally:       #清理的工作 把之前的打开的链接 文件 都关掉
                      # #避免因为程序异常造成的浪费资源和逻辑问题
            f.close()
            print(789)
    print(func())

     

    6、标准格式

    try:
        f = open('file')
        int(f.read())
    except ValueError as t:
        print(t)
        print('读文件失败了')
    except Exception as e:
        print(e)
    else:
        print('成功了')   #try代码块中没有异常的时候才会被执行
    finally:              #finally代码块中的代码永远执行
        print("关闭文件")
        f.close()

     

    7raise

    主动触发异常

    raise可以主动抛异常

    8assert

    断言

    只要条件不成立 下面代码就不执行,而且会报错

     

  • 相关阅读:
    .IllegalArgumentException: Mapped Statements collection does not contain 异常一例【我】
    Spring配置文件里加载路径中的通配符
    线程池使用Callable示例【我】
    使用Callable和Future接口创建线程
    Java线程池(Callable+Future模式)
    集合切割
    draw call 理解和优化
    Unity 3d导入3dMax模型 产生若干问题
    3dmax做的模型导入U3d后 当模型靠近摄像机时镂空问题
    不管多少个空格替换为一个空格
  • 原文地址:https://www.cnblogs.com/xiaojinyu/p/7535706.html
Copyright © 2020-2023  润新知