• 异常处理与补充模块


    今天我们来学习python中异常的捕获和处理,以及上次遗留的三个模块的内容。

     一、异常和错误

       什么是异常?

            异常发生之后,异常之后的代码就不执行了

         程序中难免会出现错误,这种错误可分为两种,一种是语法错误,一种是逻辑错误。

         1.语法错误   

    #语法错误示范一
    if
    
    #语法错误示范二
    def test:
        pass
    
    #语法错误示范三
    print(haha
    
    语法错误
    语法错误

        2.逻辑错误

    #用户输入不完整(比如输入为空)或者输入非法(输入不是数字)
    num=input(">>: ")
    int(num)
    
    #无法完成计算
    res1=1/0
    res2=1+'str'
    逻辑错误

    二、异常的种类

      在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误。   

    l=['egon','aa']
    l[3]
    IndexError
    dic={'name':'egon'}
    dic['age']
    ValueError
    s='hello'
    int(s)
    ValueError

    三、异常的处理

      1.使用if判断式

    num=input('>>:')
    if num.isdigit():
        int(num)
    elif num.isspace():
        print('输入的是空格,就执行我')
    elif len(num)==0:
        print('输入的是空,就执行我')
    else:
        print('其它情况,执行我')
    使用if判断进行异常处理

      2.语法结构处理异常

     1)基本语法

    try:
       被检测的代码块
    expect 异常类型:
        try一旦检测到异常,就执行这个位置的逻辑
    f = open('a.txt')
    
    g = (line.strip() for line in f)
    for line in g:
        print(line)
    else:
        f.close()
    读文件操作例1
    try:
        f = open('a.txt')
        g = (line.strip() for line in f)
        print(next(g))  #next(g)触发迭代
        print(next(g))
        print(next(g))
        print(next(g))
        print(next(g))
    except StopIteration:
        f.close()
    读文件操作例2

    2)异常类只能处理指定的异常情况,如果非指定异常则不能处理

    s1='hello'
    try:
        int(s1)
    except IndexError as e:
        print(e)
    
    #没有捕获到异常,直接报错

    3)多分支

    s1='hello'
    try:
        int(s1)
    except IndexError as e:
        print(e)
    except KeyError as e:
        print(e)
    except ValueError as e:
        print(e)
    View Code

    4)万能异常(在python中有一个万能异常(Excpteion),它可以捕获任意异常)

    s1 = 'hello'
    try:
        int(s1)
    except Exception as e:
        print(e)

     无论什么异常,只要一个Exception就足够,如下:

    s1 = 'hello'
    try:
        int(s1)
    except Exception,e:
        '丢弃或者执行其他逻辑'
        print(e)
    
    #如果你统一用Exception,没错,是可以捕捉所有异常,但意味着你在处理所有异常时都使用同一个逻辑去处理(这里说的逻辑即当前expect下面跟的代码块)
    
    Exception
    Exception
  • 相关阅读:
    后端PHP框架laravel学习踩的各种坑
    IE6、IE7兼容querySelectorAll和querySelector方法-最终版本
    package.json保存
    原生javascript兼容性总结
    原生javascript代码懒加载
    禁止选择文本样式
    xml转实体类的实现
    kendo ui editor 文本编辑器 自定义高度的实现
    setTimeout执行时带参数,并且带的是object对象类型的参数
    KendoUi listview template的用法记录
  • 原文地址:https://www.cnblogs.com/moning/p/7383761.html
Copyright © 2020-2023  润新知