zoukankan      html  css  js  c++  java
  • Python基础---python中的异常处理

    Python中的异常处理

    一、什么是异常处理

    python解释器检测到错误,触发异常(也允许程序员自己触发异常)

    程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)

    如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理。

    二、为什么要进行异常处理

    python解析器去执行程序,检测到了一个错误时,触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行,谁会去用一个运行着突然就崩溃的软件。

    所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性。

    三、异常处理的语法

    1.基本语法:

    python为每一种异常定制了一个类型,然后提供了一种特定的语法结构用来进行异常处理

    语法:

     try:
         被检测的代码块
     except 异常类型:
        try中一旦检测到异常,就执行这个位置的逻辑
    2.异常类只能用来处理指定的异常情况,如果非指定异常则无法处理
     # 未捕获到异常,程序直接报错
      
    s1 = 'hello'
    try: int(s1) except IndexError as e: print e
    3.多分支
     s1 = 'hello'
    try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e)
    基本用不到,有哪个程序员会写一堆的异常用来处理的。。。
    4.万能异常 在python的异常中,有一个万能异常:Exception,他可以捕获任意异常,即:
    1 s1 = 'hello'
    2 try:
    3     int(s1)
    4 except Exception as e:
    5     print(e)
    5.异常处理中的else
     s1 = 'hello'
     try:
          int(s1)
     except IndexError as e:
         print(e)
     except KeyError as e:
         print(e)
     except ValueError as e:
         print(e)
     else:
         print('try内代码块没有异常则执行我')#只有在没有异常类型的情况下才能执行else后的代码
     finally:
         print('无论异常与否,都会执行该模块,通常是进行清理工作') #无论有没有异常都会执行在finally后面的代码
    6.自己创造异常
     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) 
    7.断言
    1 # assert 条件
     
     assert 1 == 1#断定条件满足这个条件才会执行代码否则的话会抛出异常。
    
     assert 1 == 2
    8.写在最后的话
    注意:

      try...except应该尽量少用,因为它本身就是你附加给你的程序的一种异常处理的逻辑,与你的主要的工作是没有关系的
      这种东西加的多了,会导致你的代码可读性变差。

      只有在有些异常无法预知的情况下,才应该加上try...except,其他的逻辑错误应该尽量修正

    
    
    
     
  • 相关阅读:
    RAND函数和SRAND函数
    称丢手帕问题
    用GDB调试程序(七)
    用GDB调试程序(六)
    用GDB调试程序(三)
    用GDB调试程序(五)
    用GDB调试程序(二)
    用GDB调试程序(一)
    SOAP 简单对象访问协议
    关于angularJS绑定数据时自动转义html标签
  • 原文地址:https://www.cnblogs.com/niubin/p/7147386.html
Copyright © 2011-2022 走看看