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

    异常处理

    报错时候前面是错误类型,后面是异常说明上面是异常的追踪信息
    真正报错的是最后一行
    如果错误跳到内置代码,python的代码不会出错,那么就往上找自己代码的错误

    a  #NameError
    sum(1,2,3)#TypeError
    dic={}
    dic['key'] #KeyError
    l=[]
    l[index] #indexError
    l=[1,23]
    iter(l)
    l_iterator=iter(l)
    next(l_iterator)
    next(l_iterator)
    next(l_iterator)#StopIteration
    num=input('num')
    int(num)  #不输入数字#ValueError

    异常处理的应用

    1.可以用if规避,但是成本太高。
    2.不能用if处理了,StopIteration

    异常处理的特点:一旦发生异常,程序就不再执行了

    try:
       num=input('num:')
       int(num)
       print(num)
    except ValueError:
       print('请输入一个数字')

    放在try中的代码如果遇到except中的错误类型,就会执行except中的代码
    且一旦发生异常,Try中的代码会停止在异常处
    但不影响try语句之外的代码执行
    一种错误类型只能处理对应的一种错误,其他错误还会照常报错

    try:
       num=input('num:')
       int(num)
       print(num)
       a=1
       sum(1,2,3)
    except ValueError:
       print('请输入一个数字')
    except NameError:
       print('NameError')
    except TypeError:
       print('产生了一个TypeError')

    可以多个except套用,如果中间的错误了,下面的错误也不会执行
    程序跑的很好的时候ctrl+c让他停止,会发生一个异常keyboardInterrupt
    try里面最好不要调用函数

    except ValueError as valueerror:
           print('产生了一个%s'%valueerror)

    as语句,as后面的变量就是错误的具体
    as 在我们不能完全明确的知道这个错误到底是发生了什么的是时候就用as  变量
    将变量中存储的错误信息打印出来
    except Exception万能异常:
    对于你已经可以预见的但是不能完全规避的必须要处理的异常,你应该去指定他的处理方式
    对于其他你不能预料的,再使用万能异常处理
    万能异常和其他异常处理一起用时候,其他异常处理要放在上面
    异常处理中的else语句

    try:
       a
    except NameError as e:
         print(e)
    else:
         print('执行else中的代码啦')

    try语句正确执行没有发生异常才去执行else
    一般else是来看是否执行成功给一个回执

    try:
        a
    except NameError as e:
        print(e)
    finally:
        print('执行finally中的代码啦')
    finally可以最后必须执行,一般是关闭文件
    
    try:
       f=open('file')
       int(f.read())
    except ValueError:
       print('读文件失败')
    except Exception as e:
       print(e)
    else:
       print('成功')
    finally:
       f.close()

    完整异常处理的一套例子  代码执行成功时执行else  出现ValueError异常执行第二个
    别的异常执行万能异常处理,最后必须要执行finally(遇见return也执行)

    raise 触发异常用的,后边加异常,主动报异常
    assert  断言  后边是条件  不符合条件就报错

  • 相关阅读:
    python入门
    Django 知识点回顾
    Django----ORM 对表单的操作
    Django----ORM 对表单的操作2
    html
    线程ThreadPoolExecutor与进程ProcessPoolExecutor
    CMDB基于配置文件加载插件的范例
    瀑布流方式三(方式二的升级版)
    学校系统快速js代码
    小知识:Python函数传递变长
  • 原文地址:https://www.cnblogs.com/gaoshengyue/p/7518786.html
Copyright © 2011-2022 走看看