• python--异常处理


    程序员终生与bug斗争,为了铲除bug,怎能不懂异常处理的基本技巧?

    python提供了异常处理的一个方法try

    1.常见的程序错误有:

    ValueError 传入无效的参数    
    TypeError 对类型无效的操作
    IndentationError 缩进错误
    SyntaxError Python 语法错误
    KeyError 映射中没有这个键
    IndexError 序列中没有此索引(index)
    ImportError 导入模块/对象失败
    NameError 未声明/初始化对象 (没有属性)
    RuntimeError 一般的运行时错误
    常见的错误

    如何加入异常处理代码,是出现错误不报错,并且把错误类型展示

    2.那就要引出   try   了,遇见要发生的错误,就try一下吧!

    try:
        print(2+'3')
    except TypeError:
        print('你错了')     #你错了
    try
    [][3]      #IndexError
    {}['k']    #KeyError
    1/0       # ZeroDivisionError
    2+'3’     #TypeError
    iint(input(>>>) )            
     >>>qqq               #ValueError
    举例错误类型

    有人要问,try一段代码,只能预测一次错误类型么?当然不是!except支持多分支,可以try一次,except多次错误类型

    try:
        ret = int(input('number >>>'))
        print(ret*'*')
    except ValueError:
        print('输入的数据类型有误')
    except TypeError:
        print('类型操作错误')
    except Exception:
        print('你错了,老铁')
    except多分支

    3.在能够遇见错误类型的时候,我们可以用具体的错误类型,但是也有时候我们无法预测 ,这时候就要改用try    except  Exception:这种模式了

    try:
        ret = int(input('number >>>'))
        print(ret)
    except Exception:
        print('你错了,老铁')    #你错了,老铁
    万能try

     4.try除了提供except 预测错误,还提供了else  finally  进阶功能,下面让我们举例说明吧

    ①else  没有异常的时候执行else中的代码

    else:
           没有异常的时候执行else中的代码
    try:
        print(2+3)
    except TypeError:
        print('你错了')     
    else:
        print('你写的代码没有bug')   #5   你写的代码没有bug
    else

    ② finall不管代码是否异常,都会执行  常用在函数里做收尾工作,和return相遇的时候 依然会执行

    def func():
        try:
            f = open('file','w')
            print('你好')
            return True
        except Exception:
            return False
        finally:
            print('执行finally了')
            f.close()
    func()      #你好    执行finally了
    finally

    6.我们来总结一下异常处理的重点

    异常:程序一旦发生错误,就从错误的位置停下来了,不在继续执行后面的内容
    使用try和except就能处理异常
        try是我们需要处理的代码
        except 后面跟一个错误类型 当代码发生错误且错误类型符合的时候 就会执行except中的代码
        except支持多分支,可以try一次,except多次错误类型
        有没有一个能处理所有错误的类型 : Exception
            有了万能的处理机制仍然需要把能预测到的问题单独处理
            单独处理的所有内容都应该写在万能异常之前
        else : 没有异常的时候执行else中的代码
        finally : 不管代码是否异常,都会执行
            finally和return相遇的时候 依然会执行
            函数里做异常处理用,不管是否异常去做一些收尾工作
  • 相关阅读:
    java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized...
    Spring Security 自定义 登陆 权限验证
    springboot中使用spring security,登录url就出现403错误
    RocketMQ最佳实践
    JS 中获取服务器时间的注意点
    许小年:中国经济刚入寒冬,四万亿也救不了
    RestTemplate发送GET请求
    String类的format方法的用法
    参数的打包和解包实例
    16.return 返回值
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/8279090.html
Copyright © 2020-2023  润新知