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

    常用异常:
        AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
        IOError 输入/输出异常;基本上是无法打开文件
        ImportError 无法引入模块或包;基本上是路径问题或名称错误
        IndentationError 语法错误(的子类) ;代码没有正确对齐
        IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
        KeyError 试图访问字典里不存在的键
        KeyboardInterrupt Ctrl+C被按下
        NameError 使用一个还未被赋予对象的变量
        SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
        TypeError 传入对象类型与要求的不符合
        UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
        导致你以为正在访问它
        ValueError 传入一个调用者不期望的值,即使值的类型是正确的
    异常处理:
        try:
            可能发生异常的代码
        except error1,error2… as e: 捕捉指定的一个或者多个错误,多个需要用括号括起来
            这里可以自定义输出发生错误时的提示信息
        except Exception as e: 这个可以捕获所有的错误类型,一般不建议在开头用
            这里可以自定义输出发生错误时的提示信息
        else:
            一切正常时执行
        finally:
            无论是否有错都执行
    

    异常处理Demo:

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    # Author:CarsonLi
    array=['carsonHai','BertLi']
    list={'age':25,'name':'BertLi'}
    str='Hello World!'
    try:
        int(str)
        print(array[3])
        print(list['sex'])
        open("CarsonHai")
    except IndexError as e:
        print("列表下标越界", e)
    except KeyError as e:
        print("字典不存在这个key", e)
    except ValueError as e:
        print("值的类型错误", e)
    except Exception as e:
        print("未知异常:",e)
    else:
        print("一切正常时执行")
    finally:
        print("无论是否有错都执行")

     执行结果:

    值的类型错误 invalid literal for int() with base 10: 'Hello World!'
    无论是否有错都执行
    

    自定义异常:

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    # Author:CarsonLi
    
    class BertError(Exception):
        def __init__(self,message):
            self.message=message
    
        def __str__(self):
            '''此方法不写时,默认返回message,也可自定义返回内容'''
            return self.message #"自定义异常"
    
    try:
        raise BertError("Bert异常")
    except BertError as e:
        print("自定义异常:",e)
        
    执行结果:
        自定义异常: Bert异常
    

      

  • 相关阅读:
    mysql字符集和数据库引擎修改方法
    android 之GridView和ImageView教程
    把php代码保存到php文件实现方法
    extjs gridpanel 操作行 得到选中行的列
    SQL 分页
    vs 调试 慢 解决办法
    JS获取屏幕高度
    C#事件以及委托
    ExtJs 3.0 不兼容 IE9
    ASP.NET 获取客户端IP (无视代理)
  • 原文地址:https://www.cnblogs.com/bert227/p/9786903.html
Copyright © 2011-2022 走看看