• python异常处理


    python异常处理

    1. 异常捕获
      • 使用except捕获异常时,不但捕获指定类型的错误,还会捕获到其子类异常
      • 可以跨越多层调用,即捕获到方法下调用的方法的异常
    2. 调用栈
      • 错误堆栈: 记录错误,并通过logging模块配置可被打印到日志文件中
      • 如果错误没有被捕获,它就会一直往上抛,最后被Python解释器捕获,打印一个错误信息,然后程序退出

    捕获已知异常

    s1 = input("请输入一个字符:")
    try:
        int(s1)
    except IndexError as e:
        print(e)
    except KeyError as e:
        print(e)
    except ValueError as e:
        print(e)
    

    捕获未知异常

    s1 = input("请输入一个字符:")
    try:
        int(s1)
    except Exception as e:
    		print(e)
    

    异常处理完整结构

    try:
        pass  	# 主代码块
    except KeyError as e:
        pass  	# 出现该异常时执行
    else:
        pass  	# 主代码块执行完,执行该块(若捕获到异常,则不执行该句)
    finally:
        pass  	# 无论异常与否,最终执行该块(不论try、except、else是否出现异常,该句都会执行)
    

    抛出异常

    s1 = input("请输入一个字符:")
    try:
        if len(s1) != 1:
            raise Exception(KeyError)   # 抛出KeyError异常
    except Exception as e:							# 捕获异常
        print(e)
    

    自定义异常

    class MyException(Exception):
        def __init__(self, code, msg):
            self.error_code = code
            self.error_msg = msg
    
        def __str__(self):
            return self.error_code, self.error_msg
    
    
    try:
        raise MyException(3000, '自定义异常')
    except MyException as e:
        print(e.error_code, e.error_msg)
    
  • 相关阅读:
    韩寒做错了(update 4 12)。
    放弃IE6。
    阿弥陀佛,我没有“抄袭”。
    婚姻。
    爆牙齿饭否?
    地震之后——和妈妈对话。
    8年前,《西班牙,我为你哭泣。》
    在等决赛中提问。
    地震之后——中国互联网在黑夜中哭泣。
    年轻。
  • 原文地址:https://www.cnblogs.com/ericness/p/12682837.html
Copyright © 2020-2023  润新知