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

    异常处理

    什么是异常?

    程序在运行过程中出现了不可预知的错误,并且该错误没有对应的处理机制,那么就会以异常的形式表现出来,并造成的影响就是整个程序无法再正常运行。

    异常的结构

    1.异常的类型:NAMEERROR

    2.异常的信息:name 'fasada' is not defined

    3.异常的位置:Traceback (most recent call last): File "D:/python学习笔记总结/day29/异常处理.py", line 1, in <module>

    异常的种类(两大类)

    1.语法错误:是你程序立刻就能解决的,这种错误不能被容忍,语法上的错误发现之后应该立马解决。

    2.逻辑错误:这种错误时可以被容忍的,因为一眼看不出来,针对逻辑上的错误,可以采用异常处理机制进行捕获。

    常见的错误类型

    NAMERROR   :名字错误

    SyntaxError    :语法错误

    KeyError         :键不存在

    ValueError      :值错误

    IdexError        :索引错误

    如果避免异常处理

      在你认为可能会出现bug的代码上方try一下:注意try内部的代码块越少越好

    try:
            可能出错的代码
    except  出错的类型  as  e : #将报错信息赋值给变量e
            出错之后的处理机制
    try :
        name
        l = [1,2,3]
        l[111]
        d = {'name':'jason'}
        d['password']
    except NameError:
        print('名字错误')
    except IndexError:
        print('索引错误')
    except KeyError:
        print('键不存在')
    """
    错误发生之后,会立刻停止代码的运行,执行except语句,比对错误类型
    """

    万能异常捕获

    try :
        name
        l = [1,2,3]
        l[111]
        d = {'name':'jason'}
        d['password']
    except BaseException:  # 万能异常,所有的异常类型都被捕获
        print('老子天下无敌')
    #finally
    
    try :
        name
        l = [1,2,3]
        l[111]
        d = {'name':'jason'}
        d['password']
    except BaseException:
        print('老子天下无敌')
    else:
        print('被检测的代码没有任何的异常发生,才会走else')
    finally:
        print('无论代码有内有异常发生,都会在代码运行完毕后执行我')

    断言

    l  = [1,2,3]
    assert len(l) < 0   # 断言  预言
    #猜某个数据的状态,猜对了,不影响代码执行,正常走
    #猜错了 直接报错

    自定义异常

    class MyError(BaseException):
        def __init__(self,msg):
            super().__init__()
            self.msg =msg
        def __str__(self):
            return '<sadsaadas%sdaada>' % self.msg
    
    raise MyError('我自己定义的异常')  # 主动抛出异常就是将异常类的对象打印出来,会走__str__方法
  • 相关阅读:
    JAVA IDE IntelliJ IDEA使用简介(一)—之界面元素
    ASP.NET MVC的运行机制--url的全局分析
    ASP.NET MVC
    [Android 新特性] 15项大改进 Android 4.4新特性解析
    [Android Pro] activity-alias的使用
    [Android Pro] 控制硬加速 hardwareAccelerated 在3.0才有的
    [Android Pro] Android中IntentService的原理及使用
    [SQLite] SQLite学习手册(数据库和事务)
    [Android UI] ActionBar 自定义属性
    [Android Memory] App调试内存泄露之Context篇(下)
  • 原文地址:https://www.cnblogs.com/AbrahamChen/p/11329363.html
Copyright © 2011-2022 走看看