• 异常处理


    1. 什么是异常处理
    异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常
    没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止

    异常包含三个部分:
    1. traceback异常的追踪信息
    2. 异常的类型
    3. 异常的信息

    错误分为两大类:
    1. 语法上的错误:在程序运行前就应该立即修正
    2. 逻辑上的错误

    2. 为何要异常处理

    避免程序因为异常而崩溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性

    3. 如何异常处理
    try:
    代码1
    代码2
    代码3
    ......
    except NameError:
    当抛出的异常是NameError时执行的子代码块
    except ....:
    pass
    except ...:
    pass
    else:
    pass
    finally:
    pass
    else必须放到后面,else的子代码块会在被检测的代码没有异常的情况下执行
    finally无论被检测的代码有没有异常都会执行

    =============================================================
     try:
    print('=====>1')
    print('=====>2')
    print('=====>3')
    l=[1,2,3,4,5] #IndexError
    l[10]
    print('=====>4')
    aaa #nameError
    print('=====>5')
    '1'>1 #TypeError
    print('=====>6')
    except IndexError:
    print('IndexError')
    except TypeError:
    print('TypeError')
    except Exception:
    print('Exception')
    else:
    print('没毛病(没有异常才能执行)')
    finally:
    print('有毛病也执行(有没有异常都执行)')
    print('end')
     万能异常类型Exception:可以匹配任意类型的异常
    ==============================================================
    常见异常类型:
     print('dadada'    #SyntaxError: unexpected EOF while parsing

    l=[1,2,3,4,5] #IndexError: list index out of range
    l[10]

    xxx #NameError: name 'xxx' is not defined

    l={'a':1,'b':2} #KeyError: 'c'
    l['c']

    'a'>1 #TypeError: '>' not supported between instances of 'str' and 'int'

    for i in 10 #SyntaxError: invalid syntax

    1/0 #ZeroDivisionError: division by zero

    ======================================================================

    主动触发异常:
     class People:
    def __init__(self,name,age):
    self.__name=name
    self.__age=age

    def tell_info(self):
    print(self.__name,self.__age)

    def set(self,name,age):
    if not isinstance(name,str):
    raise TypeError('name必须是str类型')
    if not isinstance(age,int):
    raise TypeError('age必须是int类型')
    self.__name=name
    self.__age=age

    peo1=People('qqq',10)
    # print(peo1.__dict__)
    # peo1.tell_info()
    ==================================================================
    了解:
     自定义异常类型(了解)
    class MyException(BaseException):
    def __init__(self,msg):
    super().__init__()
    self.msg=msg

    def __str__(self):
    return '<%s>' %self.msg

    raise MyException('我自定义的异常')



     断言(了解)
    print('上半部分,生产数据')
    l=[1,2,3,4]

    # if len(l) != 5:
    # raise TypeError('列表的长度必须为5')
    assert len(l) == 5

    print('下半部分,处理数据')


  • 相关阅读:
    分享50个漂亮的设计师个人作品集网站案例
    Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
    ajax异步请求
    angularJS(6)
    angularJS(5)
    PHP实现RTX发送消息提醒
    ajax异步请求
    angularJS(4)
    angularJS(3)
    jsPanel插件Option总结
  • 原文地址:https://www.cnblogs.com/zhangpang/p/9544809.html
Copyright © 2020-2023  润新知