• 异常处理



    异常处理程序常规语法

    try:
            suite1 #测试语句块
    except exception1:
            suite2 #如果测试语句suite1中发生exception1异常时执行
    except (exception2,exception3):
            suite3 #如果测试语句suite1中发生元组中任意异常时执行
    except exception4 as reason: #as把异常的原因赋值给reason
            suite4 #如果测试语句suite1发生exception4的异常时执行
    except:
            suite5 #如果测试语句suite1发生异常在所列出的异常之外时执行
    else:
            suite5 #如果测试语句块suite1中没有发生异常时执行
    finally:
            suit6 #不管测试语句suite1中又没有发生异常都会执行

    注意:中间的except,else,finally都是可选的
    但至少有一个,不然try就没有意义了,根据实际中的需求来选择。

    try:
         print(1111)
         a = 'python'
         ff = open('xxx.py')
         print(x)
         print(a[10])
    except (IndexError,NameError) as reason:
         print(reason)
    else:
         print('没发生异常')
    finally:
         print('都执行')
    
    print(222)

    范例1:各种异常捕捉设置

    try:
        print(1111)
        a='python'
        print(a[10])
        print(2222)
    except NameError:
        print('没有被定义该变量')
    except IndexError:
        print('超出索引范围')
    else:
        print('没发生异常!!!')
    
    finally:
        print('不管上面程序有没有发生异常,该标签里的语句都会执行')

    范例2:具体错误原因通过as 变量来接收,这里用变量只要不是Python内置关键字都可以随意取,我这里用字母e

    try:
        a='python'
        print(a[10])
    except IndexError as e:
        print(e)

    范例3:多种报错可以整合在一起接收输出

    try:
        a='python'
        print(11111)
        open('x')
        print(a[10])
        print(b)
    
    except(IndexError,NameError,FileNotFoundError) as reason:
        print(reason)

    # raise 触发异常  使用raise语句自己触发异常,换句话说就是自定义触发异常

    比如自己定义的异常为InputError

    raise NameError
    
    输出内容:
    Traceback (most recent call last):
      File "D:/Python36/note/001.py", line 42, in <module>
        raise NameError
    NameError
    >>> 

    # assert断言:用来声明某个条件是真的  如果条件是假的则会抛出AssertionError异常

    print('分割符############')
    assert 20 < 130
    print('分隔符--------')
    assert 20 < 13
    
    输出结果:
    分割符############
    分隔符--------
    Traceback (most recent call last):
      File "D:/Python36/note/001.py", line 44, in <module>
        assert 20 < 13
    AssertionError
    >>> 

    从上述例子中发现,如果assert后面条件语句为真,则不输出任何内容,否则就输出 AssertionError异常

    总结:

    try:

         程序执行体

    except *Error:

         print('xxxxxxx')

    其他执行体pass

    try结果捕捉到异常执行完except里面的语句,后面其他的执行体仍然继续执行,try结构只是将一段语句中的异常捕捉到然后抛出来,但是不影响程序体本身其他的部分的执行动作

  • 相关阅读:
    0302思考并回答一些问题
    1231 实验四 递归下降语法分析程序设计
    1118 实验三 有限自动机的构造与识别
    1112对他人的博客评论及建议
    1029c语言文法
    1022词法分析实验总结
    词法分析
    0330 复利计算——单元测试
    0321 读《构建之法》第一,二,三章有感
    0316 复利计算总结(0330 更新)
  • 原文地址:https://www.cnblogs.com/kindnull/p/6826105.html
Copyright © 2020-2023  润新知