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


    异常处理程序常规语法

    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结构只是将一段语句中的异常捕捉到然后抛出来,但是不影响程序体本身其他的部分的执行动作

  • 相关阅读:
    Struts2学习笔记《三》
    《Shiro框架》shiro学习中报错解决方法
    android
    MAC 设置环境变量path的几种方法
    利用ant脚本 自动构建svn增量/全量 系统程序升级包
    Jenkins2 插件 Pipeline+BlueOcean 实现持续交付的初次演练
    Jenkins2 实现持续交付初次演练(MultiJob,Pipeline,Blue Ocean)
    jenkins2 -pipeline 常用groovy脚本
    jenkins2 pipeline介绍
    scala学习(1)----map和flatMap的区别
  • 原文地址:https://www.cnblogs.com/kindnull/p/6826105.html
Copyright © 2011-2022 走看看