美文网首页
python常见异常和异常捕获

python常见异常和异常捕获

作者: Xyxtank | 来源:发表于2019-05-12 20:48 被阅读0次

    一、常见异常

    NameError错误,比如:

    a = b
    

    结果:

    NameError: name 'b' is not defined
    

    SyntaxError错误,比如:

    print(()
    

    结果:

    SyntaxError: unexpected EOF while parsing
    

    ValueError错误,比如:

    year = int(input('输入年份:'))
    

    结果:

    ValueError: invalid literal for int() with base 10: 'aa'
    

    IndexError错误,比如:

    a = [1,2,3,4]
    print(a[4])
    

    结果:

    IndexError: list index out of range
    

    IndentationError错误,也就是缩进错误,比如:

     a = [1,2,3]
     a.append('a')
    

    结果:

    IndentationError: unexpected indent
    

    KeyError错误,比如:

    a = {'a':1,'b':2,'c':3}
    print(a['d'])
    

    结果:

    KeyError: 'd'
    

    AttributeError错误,属性错误,比如:

    a = 123
    a.append('a')
    

    结果:

    AttributeError: 'int' object has no attribute 'append'
    

    二、异常捕获

    对特定的错误进行捕获,用as可以自定义自己想要的提示信息,比如:

    try:
        a = {'a': 1, 'b': 2, 'c': 3}
        print(a['d'])
    except KeyError as e:
        print('错误信息提示:%s'%e)
    

    结果:

    错误信息提示:'d'
    

    捕获多个异常,需要注意的是捕获多个异常时要用(),因为except后面只能接一个参数,比如:

    try:
        a = {'a': 1, 'b': 2, 'c': 3}
        print(a['d'])
    except (KeyError,AttributeError,IndexError) as e:
        print('错误信息提示:%s'%e)
    

    结果:

    错误信息提示:'d'
    

    捕获全部异常时,可以用Exception,比如:

    try:
        a = {'a': 1, 'b': 2, 'c': 3}
        print(a['d'])
    except Exception as e:
        print('错误信息提示:%s'%e)
    
    

    结果:

    错误信息提示:'d'
    

    自定义错误信息,比如:

    try:
        raise KeyError('TheError')
        a = {'a': 1, 'b': 2, 'c': 3}
        print(a['d'])
    except KeyError as e:
        print('错误信息提示:%s'%e)
    

    结果:

    错误信息提示:'TheError'
    

    异常捕获中finally的使用。一般用于不管程序是否错误,程序最后都应该执行的步骤,例如在文件操作中,关闭文件是最后必须执行的操作,比如:

    try:
        text = open('a1.txt','r')
        print(text.readline())
    except Exception as e:
        print('错误信息提示:%s'%e)
    finally:
        text.close()
    

    结果:

    text.close()
    NameError: name 'text' is not defined
    

    相关文章

      网友评论

          本文标题:python常见异常和异常捕获

          本文链接:https://www.haomeiwen.com/subject/tmjhaqtx.html