zoukankan      html  css  js  c++  java
  • 异常处理

    一. 异常处理
    
    IndexError [][1]
    KeyError {}['key']
    pickle.load() EOFError
    FileNotFoundError open('aa')
    ModuleNotFoundError import aaaaaaaaaaa
    ValueError int('sdjkhf')
    NameError name
    SyntaxError 语法错误
    
    多行报错: 在嵌套调用的过程中, 内部代码出了问题, 外部所有的调用的地方都会成为报错追溯信息的一部分, 要从下往上找, 看不出问题再把报错的错误提示贴到百度
    def func1():
        name
    
    def func2():
        func1()
    
    def main():
        func2()
    
    main()
    
    
    单分支
    try:
        pass
    except ValueError:
        pass
    
    多分支
    try:
        pass
    except ValueError:
        pass
    except IndexError:
        pass
    
    多分支合并
    try:
        pass
    except (ValueError, IndexError):
        pass
    
    万能异常
    try:
        pass
    except:   # 或except Exception:  或except Exception as e:
        # print(e)
        pass
    
    多分支 + 万能异常 : 万能异常应该永远放在异常处理的最下面
    try:
        pass
    except (ValueError,IndexError):
        print('针对性的处理')
    except Exception as e:
        print(e)
        print('通用性的处理')
    
    
    异常处理的几种情况
    try ... except
    try ... except ... else
    try ... finally
    try ... except ... finally
    try ... except ... else ... finally
    
    else分支 当代码不发生异常, 不进行except的输出时, 进行else的输出
    try:
        print('aaa')
    except NameError:
        print('name error')
    except IndexError:
        print('index error')
    except Exception as e:
        print('Exception')
    else:
        print('else')
    
    finally分支, finally用来回收一些操作系统的资源 : 数据库连接 打开的文件句柄 网络连接
    try:
        print('aaa')
    except NameError:
        print('name error')
    except IndexError:
        print('index error')
    except Exception as e:
        print('Exception')
    else:
        print('else')
    finally:                     # 无论如何都会被执行
        print('finally')         # 无论是否执行else, 是否报错, 最终都会执行finally
    
    def func():
        f = open('file')
        try:
            while 1:
                for line in f:
                    if line.startswith('a'):
                        return line
        except:
            print('异常处理')
        finally:      # 即使return也会先执行fianlly中的代码
            f.close()
    
    try:
        f = open('www','w')
        f.read()
    finally:           # 即使遇到报错,程序结束,也会先执行finally中的代码,然后再结束程序
        f.close()
        print('文件已经关闭了')
    
    
    主动抛出异常 : 是给其他开发者用的
    raise ValueError
    raise ValueError('你写的不对')
    
    断言 - 语法
    assert 1==2  # 只能接受一个布尔值    输出错误AssertionError
    assert 1==1  # 只能接受一个布尔值    什么都不输出
    

      

  • 相关阅读:
    小程序网络请求封装(三)
    上传图片
    struts2导出excel
    金额超过一定位数显示异常问题
    限制日期控件 最大可选值为当前日期
    substr函数小结
    票号自动生成(按照一定的规则)
    Nginx
    Cron表达式以及定时任务配置
    HTML Input 表单校验之datatype
  • 原文地址:https://www.cnblogs.com/NachoLau/p/9519962.html
Copyright © 2011-2022 走看看