• 异常处理


    异常:

    1.什么是异常*****
    异常时错误发生前的一种信号
    如果没有人来处理这个信号 执行就会中断执行并抛出错误信息提示




    2.异常的分类
    1.语法检查异常:这种异常时最低级的异常(绝对不应该犯的错误)
    也非常好避免:如果时编译器 会自动给提示
    如果是文本编译器 在你运行代码前 解释器会自动检测语法
    2.运行时异常(逻辑异常):这种异常只有在代码执行时才会被发现
    我们要处理的重点就是运行时的异常
    特点:在没有运行代码前是无法发现的
    如果运行时异常已经发生并且没有正确处理他,就会抛出错
    误信息,并且中断程序的执行。这是我们在学习异常时要解
    决的问题



    3.异常的组成
    1.追踪信息(具体发生异常的位置,并提示异常调用顺序)
    2.异常的类型(错误的类型)
    3.异常的消息(详细的错误信息)



    4.常见的异常
    NanmeError 找不到这个名字 要么变量 要么函数
    ValueError 在调用一个函数时给的值不正确
    TypeError 类型错误 例如字符串与数字进行加减乘除 调用一个不能被调用的类型
    ZeroDivisionError 除数不能为0
    KeyError 没有这个key值
    IndexError 索引不存在
    StopIteration 没有更多的值可以迭代
    FileNotFoundError 文件不存在





    5.异常的处理*****
    要处理异常
    要学的就是一个新的语法
    try:
    这里放可能出现异常的代码
    except 异常的类型
    当异常发生并且匹配上类型时
    执行except中的代码
    注意:一旦try中又代码抛出了异常 那么之后代码都不执行

    万能异常:except:Exception(这是异常的父类)
    except:BaseException(Exception的父类)
    except:


    6.主动抛出异常
    当程序中有一些限制 然而用户没有遵循 我们可以主动抛出异常
    语法:
    raise 异常类型(异常的详细信息)
    类型必须是BaseException的子类

    7.断言
    可以理解为断定 就是很清楚 很明确
    什么时候需要断定?
    下面代码必须依赖上面代码的正确数据
    语法:assert 结果为Bool的表达式‘如果True继续往下执行,反之抛出异常
    a=[]
    assert len(a)>0
    print(a[0])



    8.自定义异常
    当系统提供的这些异常类型 和你要描述的错误不匹配时 就需要自定义类型
    写法:
    class 自定义异常类型名称(BaseException):
    总结一下:之所以自定义类型 是为了更具体描述你的错误,使使用者可以直观看出
    关键点:1.如何自定义异常类型
    2.在except中 使用 as 来捕获异常




    9.总结 使用场景
    在遇到我们不知道异常在哪或者根本无法解决异常的时候使用
  • 相关阅读:
    java基础(8)---接口和lambda
    asp.net ashx处理程序中switch case的替代方案总结
    C# 委托(delegate)、泛型委托和Lambda表达式
    js判断浏览器是否安装或启用了flash的方法总结
    ASP.NET登录验证码解决方案
    C#读取匿名对象的属性值的方法总结
    C#中char[]与string之间的转换;byte[]与string之间的转化
    【Sublime】Sublime 常用插件
    js ajax设置和获取自定义header信息的方法总结
    .Net 通过设置Access-Control-Allow-Origin来实现跨域访问
  • 原文地址:https://www.cnblogs.com/yanhui1995/p/9890330.html
Copyright © 2020-2023  润新知