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

    1.捕捉到异常后,出现异常的语句之后的代码就都不执行了,上代码:

    try:
        print(name)
        print(1)
        print(2)
        print(3)
    except NameError as e:  #将异常的值赋给e
        print('异常%s'%e)
    #异常name 'name' is not defined

    2.如果有多个异常可以用多分支异常来处理,同样每次只会捕捉到一个异常,然后之后的代码不会执行,即使也是有其他异常捕捉的代码:

    try:
        # print(name)
        print(1)
        print(2)
        dic = {}
        print(dic['name'])
        print(3)
    except NameError as e:
        print('异常%s'%e)
    except KeyError as e:
        print('异常%s'%e)
    #异常name 'name' is not defined

    3.异常捕捉中也会用到else,else内的代码如果执行的话,必须else之前没有异常产生:

    try:
        # print(name)
        print(1)
        print(2)
        dic = {}
        # print(dic['name'])
        print(3)
    except NameError as e:
        print('异常%s'%e)
    except KeyError as e:
        print('异常%s'%e)
    else:
        print('ok')
    #1
    #2
    #3
    #ok

    4.无论异常有没有产生都会执行的代码,需要用到finally:

    try:
        print(name)
        print(1)
        print(2)
        dic = {}
        # print(dic['name'])
        print(3)
    except NameError as e:
        print('异常%s'%e)
    except KeyError as e:
        print('异常%s'%e)
    else:
        print('ok')
    finally:
        print('管它三七二十一')
    #异常name 'name' is not defined
    #管它三七二十一
    try:
        # print(name)
        print(1)
        print(2)
        dic = {}
        # print(dic['name'])
        print(3)
    except NameError as e:
        print('异常%s'%e)
    except KeyError as e:
        print('异常%s'%e)
    else:
        print('ok')
    finally:
        print('管它三七二十一')
    #1
    #2
    #3
    #ok
    #管它三七二十一

     5.主动触发异常,代码本身正常执行不会触发异常,只是我们想‘规范代码的执行逻辑’,比如:

    words = input('please input your age:').strip()
    if not words.isdigit():
        raise TypeError('必须输入数字!!!')
    #please input your age:abc
    #Traceback (most recent call last):
    #  File "E:/pythondir/异常处理/exception_deal.py", line 3, in <module>
    #    raise TypeError('必须输入数字!!!')
    #TypeError: 必须输入数字!!!

     6.断言,assert后面的条件不满足就会触发异常:

    words = input('please input your age:').strip()
    assert words.isdigit()
    print('im %s years old'%words)
    #please input your age:abc
    #Traceback (most recent call last):
      File "E:/pythondir/异常处理/exception_deal.py", line 2, in <module>
    #    assert words.isdigit()
    #AssertionError

    7.自定义异常,即自定义一个异常类:

    class myexceptinon(BaseException):
        def __init__(self,msg):
            super().__init__()
            self.msg = msg
        def __str__(self):
            return self.msg
    
    if 1 == 1:
        raise myexceptinon('没有定义')
    #Traceback (most recent call last):
      File "E:/pythondir/异常处理/exception_deal.py", line 13, in <module>
        raise myexceptinon('没有定义')
    #__main__.myexceptinon: 没有定义
  • 相关阅读:
    动态规划例题
    c++ 进制转换函数
    约瑟夫问题
    set的基本使用
    stl中的二分查找
    1.生成的接口返回参数不包括系统自带的参数
    查看被锁定的表,并解锁
    添加、修改表中的字段
    NPOI简单示例2—合并表头
    NPOI简单示例
  • 原文地址:https://www.cnblogs.com/thanos-ryan/p/13811792.html
Copyright © 2011-2022 走看看