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

    # 异常的抛出机制:
    #
    # 1、如果在运行时发生异常,解释器会查找相应的处理语句(称为handler).
    #
    # 2、要是在当前函数里没有找到的话,它会将异常传递给上层的调用函数,看看那里能不能处理。
    #
    # 3、如果在最外层(全局“main”)还是没有找到的话,解释器就会退出,同时打印出traceback以便让用户找到错误产生的原因
    # s1 = 'hello'
    # try:
    #     int(s1)
    # except IndexError as e:
    #     print(e)
    # except KeyError as e:
    #     print(e)
    # except ValueError as e:
    #     print(e)
    # #except Exception as e:
    # #    print(e)
    # else:
    #     print('try内代码块没有异常则执行我')
    # finally:
    #     print('无论异常与否,都会执行该模块,通常是进行清理工作')
    
    # 未捕获到异常,程序直接报错
    #part2:异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。
    # s1 = 'hello'
    # try:
    #     int(s1)
    # except IndexError as e:
    #     print (e)
    #多分支
    # s1 = 'hello'
    # try:
    #     int(s1)
    # except IndexError as e:
    #     print(e)
    # except KeyError as e:
    #     print(e)
    # except ValueError as e:
    #     print(e)
    #万能异常 在python的异常中,有一个万能异常:Exception,他可以捕获任意异常,即:
    # s1 = 'hello'
    # try:
    #     int(s1)
    # except Exception as e:
    #     print(e)
    
    #如果你想要的效果是,对于不同的异常我们需要定制不同的处理逻辑,那就需要用到多分支了
    # s1 = 'hello'
    # try:
    #     int(s1)
    # except IndexError as e:
    #     print(e)
    # except KeyError as e:
    #     print(e)
    # except ValueError as e:
    #     print(e)
    
    # s1 = 'hello'
    # try:
    #     int(s1)
    # except IndexError as e:
    #     print(e)
    # except KeyError as e:
    #     print(e)
    # except ValueError as e:
    #     print(e)
    # except Exception as e:
    #     print(e)
    
    
    # try...finally...
    #
    # try...finally...子句用来表达这样的情况:
    #
    # 我们不管线捕捉到的是什么错误,无论错误是不是发生,这些代码“必须”运行,比如文件关闭,释放锁,把数据库连接返还给连接池等。
    #异常的其他机构
    # s1 = 'hello'
    # try:
    #     int(s1)
    # except IndexError as e:
    #     print(e)
    # except KeyError as e:
    #     print(e)
    # except ValueError as e:
    #     print(e)
    # #except Exception as e:
    # #    print(e)
    # else:
    #     print('try内代码块没有异常则执行我')
    # finally:
    #     print('无论异常与否,都会执行该模块,通常是进行清理工作')
    
    #主动触发异常:又称抛出异常
    # __author__ = 'Linhaifeng'
    #
    # try:
    #     raise TypeError('类型错误')
    # except Exception as e:
    #     print(e)
    
    # class EgonException(BaseException):
    #     def __init__(self,msg):
    #         self.msg=msg
    #     def __str__(self):
    #         return self.msg
    #
    # try:
    #     raise EgonException('类型错误')
    # except EgonException as e:
    #     print(e)
    #try..except的方式比较if的方式的好处
    #try..except这种异常处理机制就是取代if那种方式,让你的程序在不牺牲可读性的前提下增强健壮性和容错性
    #异常处理中为每一个异常定制了异常类型(python中统一了类与类型,类型即类),对于同一种异常,一个except就可以捕捉到,可以同时处理多段代码的异常(无需‘写多个if判断式’)减少了代码,增强了可读性
    
    # 使用try..except的方式
    #
    # 1:把错误处理和真正的工作分开来
    # 2:代码更易组织,更清晰,复杂的工作任务更容易实现;
    # 3:毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;
    #什么时候用异常处理
    #y...except应该尽量少用,因为它本身就是你附加给你的程序的一种异常处理的逻辑,与你的主要的工作是没有关系的
    #这种东西加的多了,会导致你的代码可读性变差
    #只有在有些异常无法预知的情况下,才应该加上try...except,其他的逻辑错误应该尽量修正
  • 相关阅读:
    pycharm快捷键
    Docker
    Go语言与Elasticsearch
    Celery与APScheduler
    爬虫入门到入狱
    数据分析
    后台管理
    Linux基础与自动化运维
    微信小程序
    Git
  • 原文地址:https://www.cnblogs.com/Bruce-yin/p/7072682.html
Copyright © 2011-2022 走看看