zoukankan      html  css  js  c++  java
  • python_异常

    一。异常

    定义:程序出现了意想不到的情况。

    注意:异常不解决,程序会奔溃,停止运行。

    1)捕获异常

    形式1(try...except...):

    try 要运行的有可能发生异常的代码 :
    代码
    except 异常:
    出现异常的时候要运行的代码(执行的操作),记录日志
    注意:一旦 try 当中出现异常,立即调到 except 子句,try 剩下的代码不会再执行。
    例子(不抛出异常):
    try:
    list_1= ['yuz', 'bt', 'wfe', 'fwo']
    print(list_1[9])
    except:
    pass
    运行结果(直接把异常接收了不会直接报错):

    try:开始监控代码

    except:接收异常

    形式2(try...except Except as e)

    try:
    list_1= ['yuz', 'bt', 'wfe', 'fwo']
    print(list_1[9])
    except Exception as e:
    print("list_1 这里执行出错了,错误是: {}".format(e))
    运行结果:

    形式3(try...except IndexError 或者 ValueError 等 ,若捕捉的错误不是对应类型,程序还是会停止的 需要不断试错并捕捉。注意:这里可以根据异常类型做不同的操作

    try:
    list_1= ['yuz', 'bt', 'wfe', 'fwo']
    print(list_1[9])
    except IndexError as e:
    print("list_1 这里执行出错了,IndexError 错误是: {}".format(e))

    形式4(分组:try...except (IndexError,ValueError, KeyError))

    try:
    2 /0
    list_1= ['yuz', 'bt', 'wfe', 'fwo']
    print(list_1[9])
    except (IndexError,NameError,SyntaxError,TypeError,ZeroDivisionError) as e:
    print("list_1 这里执行出错了,ZeroDivisionError 错误是: {}".format(e))
    运行结果:

    形式5(finally:管有没有报错,fianally 都会执行的。try...except...finally)

    try:
    list_1 = ['yuz', 'bt', 'wfe', 'fwo']
    print(list_1[9])
    except Exception as err:
    print("程序出现错误 {}".format(err))
    finally:
    print("已经完成")
    运行结果:

    形式6(抛出异常:raise):

    try:
    list_1= ['yuz', 'bt', 'wfe', 'fwo']
    print(list_1[9])
    except:
    raise
    运行结果:

     

     注意:Exception 是捕捉常用异常(语法错误是不能捕捉的);在写程序时建议先不要对异常进行捕捉(捕捉后不抛出该异常根本不知道是什么类型的异常);

    对每一种不同类型的异常分开处理;




     常用的异常类型:

    ImportError: 无法引入模块或包。
    IndexError: 下标索引超出序列边界;
    NameError: 使用一个还未赋予对象的变量;
    SyntaxError: 代码逻辑语法出错,不能执行; 不能去捕获
    TypeError: 传入的对象类型与要求不符;
    ValueError: 传入一个不被期望的值,即使类型正确。
    KeyError: 试图访问你字典里不存在的键。
    IOError:输入输出异常.文件操作

  • 相关阅读:
    Java基础-String、StringBuffer、StringBuilder的区别
    Java基础-String类能被继承吗,为什么
    Java基础-Java中的基本数据类型是什么,各自占用多少字节
    JAVA关键字
    Java 栈(stack)与堆(heap) 详解
    Hibernate--hibernate.hbm.xml详解
    Hhibernate--映射继承关系
    C--c语言模拟java的linkedList
    C--调试基本命令
    C--指针
  • 原文地址:https://www.cnblogs.com/newsss/p/12860535.html
Copyright © 2011-2022 走看看