• 异常处理


    异常处理


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

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

    如何处理异常?
    两种错误:
    语法上的错误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判断来进行”预防”
  • 相关阅读:
    257. Binary Tree Paths
    324. Wiggle Sort II
    315. Count of Smaller Numbers After Self
    350. Intersection of Two Arrays II
    295. Find Median from Data Stream
    289. Game of Life
    287. Find the Duplicate Number
    279. Perfect Squares
    384. Shuffle an Array
    E
  • 原文地址:https://www.cnblogs.com/h1227/p/12715167.html
Copyright © 2020-2023  润新知