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

    异常处理


    什么是异常:
    异常是程序发生错误的信号,程序一旦出错就会抛出异常,程序的运行随即终止
    异常处理的三个特征:异常的追踪信息 异常的类型 异常的内容

    为何处理异常:
    为了增强程序的健壮性,即便是程序运行过程中出错了,也不要终止程序
    而是捕捉异常并处理:将出错信息记录到日志内

    如何处理异常?
    两种错误:
    语法上的错误SyntaxError:必须在程序运行前就改正
    逻辑上的错误:
    第一种:错误发生的条件是可以预知的,使用if判断来解决
    第二种:错误发生的条件是无法预知的,我们需要来捕捉异常
    try:
    被检测的代码块(执行过程中抛出异常,该行代码同级别的后续代码不会运行)
    except 异常类型1:
    检测到异常,就执行这个位置的逻辑
    except 异常类型2:
    检测到异常,就执行这个位置的逻辑
    except Exception(万能异常):
    所有异常都可以匹配的到
    。。。
    else(else不能单独与try配合使用,必须要搭配except):
    如果被检测的子代码块没有异常发生,则会执行else的子代码

    finally(finally可以单独与try配合使用):
    不处理异常,无论被检测的子代码块有无异常发生,都会执行finally的子代码

    异常处理的用法


    用法一:try + except
    print('start...')

    try:
    print('1111111111')
    l=['aaa','bbbb']
    l[3] # 抛出异常IndexError,该行代码同级别的后续代码不会运行
    print('2222222222')
    xxx
    print('33333333')
    dic={'a':1}
    dic['a']
    except IndexError as e:
    print('异常的信息: ',e)

    print('end....')

    用法二:try + 多分支的except
    print('start...')

    try:
    print('1111111111')
    l=['aaa','bbbb']
    # l[3] # 抛出异常IndexError,该行代码同级别的后续代码不会运行
    print('2222222222')
    xxx
    print('33333333')
    dic={'a':1}
    dic['a']
    except IndexError as e:
    print('异常的信息: ',e)
    except NameError as e:
    print('异常的信息: ',e)

    print('end....')

    用法三:try + except Exception(万能异常)

    print('start...')

    try:
    print('1111111111')
    l = ['aaa', 'bbbb']
    l[3] # 抛出异常IndexError,该行代码同级别的后续代码不会运行
    print('2222222222')
    xxx
    print('33333333')
    dic = {'a': 1}
    dic['aaa']
    # except (IndexError, NameError) as e:
    # print('异常的信息: ', e)
    # except KeyError as e:
    # print('字典的key不存在: ', e)
    except Exception as e: # 万能异常
    print('所有异常都可以匹配的到')
    print('end....')

    用法四:try + except + else(不能单独与try配合使用,必须要搭配except)
    try:
    print('1111111111')
    print('2222222222')
    print('33333333')
    except Exception as e: # 万能异常
    print('所有异常都可以匹配的到')
    else:
    print('====>')

    print('end....')

    用法五:try + finally (finally可以单独与try配合使用)

    try + except + finally
    try + except + else + finally
    print('start...')

    try:
    print('1111111111')
    l = ['aaa', 'bbbb']
    l[3] # 抛出异常IndexError,该行代码同级别的后续代码不会运行
    print('2222222222')
    xxx
    print('33333333')
    dic = {'a': 1}
    dic['aaa']
    finally: # 不处理异常,无论是否发生异常都会执行finally的子代码
    print('====》》》》》应该把被检测代码中回收系统资源的代码放到这里')

    print('end....')

    异常处理的使用场景

    何时使用:在了解了异常处理机制后,本着提高程序容错性和可靠性的目的,读者可能会错误地认为应该尽可能多地为程序加上try...except...,
    这其是在过度消费程序的可读性,因为try...except本来就是你附加给程序的一种额外的逻辑,与你的主要工作是没有多大关系的。

    如果错误发生的条件是“可预知的”,我们应该用if判断来进行”预防”
  • 相关阅读:
    关于json操作,这里再为大家推荐几款比较实用的json在线工具
    JS操作JSON总结
    HTML WebSocket
    HTML应用程序缓存
    前段也能学习网址
    简述jpg。Gif。png-8.png-24的区别,分别使用场景
    HTML相关问题
    html5移动端知识点总结
    html5本地存储(localStorage)使用介绍
    node环境变量----新全局包管理配置
  • 原文地址:https://www.cnblogs.com/h1227/p/12715167.html
Copyright © 2011-2022 走看看