美文网首页
python异常处理

python异常处理

作者: listems | 来源:发表于2020-04-09 15:08 被阅读0次

异常

  • 异常是什么?
    Python用异常对象(exception object)来表示异常情况。
    遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(traceback, 一种错误信息)终止执行
ipt = input("请输入:")
num = int(ipt)
print(num)   # valueError
fl = float(ipt)
print(fl)

prin("")  #NameError: name 'prin' is not defined  代码执行停止
a = 2
print(a)

捕获异常

  • 查看异常类型
    ipython交互环境下输入help(builtin)查看error
In [1]: help(__builtin__)
Help on built-in module builtins:
  • try-except-else-finally
  • 在日常维护中,需要把错误记录分类好写入日志,方便以后维护
    try:
    正常程序时,执行的代码块
    except:
    抛出异常时,捕捉异常,且自动执行该代码块
    else:
    没有出错,则执行else
    finally:
    不管出不出错,肯定执行
try:    
    ipt = input("请输入")   
    num = int(ipt)    
    print(num)
except Exception as e:  # Exception匹配了所有异常,把异常名称赋给了e 
# 一旦有异常,执行except代码块    
    print(e)    
    num = 1    
    print(num)
    
try:  # 正常执行时输出try里面代码 
    # li = [1,2]   
    # li[2]   # IndexError: list index out of range    
    a = 2    
    b = 0    
    c = a/b    
    print(c)  # ZeroDivisionError: division by zero
except IndexError as e:   
    # 要分类记录好    
    print(e)
except ZeroDivisionError as e:
    print(e)
except Exception as e:    # exception 父类    
    print(e)
else:   
    print("如何没有错误,执行else里面的代码")
finally:  # 文件读写操作会用到    
    # f.close()   
    print("不管有没有异常,都执行")

触发异常 raise

  • raise Exception()
# 判断一下熟没有熟的状态
def test(time):    
    if time < 5:
    raise Exception("还没有熟") # 没熟的异常
    
try:
    test(4)
except Exception as e:
    print(e)
else:
    print("顾客请吃")

# 模拟数据库
def db():
    # 模拟数据库
    raise Exception("数据库错误")
    
def demo():  
    try:  
    db() 
    except Exception as e:   
    print(e, "错误1")  # 记录数据库主动抛出的异常错误   
    try:        
    li = [1, 2]       
    print(li[3])    
    except Exception as e:   
    print(e, "错误2")   # 这里记录demo代码块的错误demo()

自定义异常

  • 创建一个新的异常类,根据自己的需求拟定异常规则,继承Exception类
class Mistake(Exception): # 继承父类Exception    
    def __init__(self,msg):       
        self.msg_error = msg    
    def __str__(self):   # 实例化时的返回信息        
        return self.msg_error

try: 
    raise Mistake("电脑错了")   # 相当于实例化类
except Exception as e:    
    print(e)

断言assert

  • 形式:assert condition, your message
  • condition为True时,程序继续运行,下一个语句会被执行
  • condition为False时将会抛出AssertionError异常,该异常的信息为your message
  • assert常常用来调试和测试
# print("----1----")
# assert 1 == 2    # 一般用于强制用户服从
# print("----2----")

相关文章

网友评论

      本文标题:python异常处理

      本文链接:https://www.haomeiwen.com/subject/yeecmhtx.html