python笔记-错误处理

2018-06-27 102次浏览 发表评论
try:
    print('try...')
    r = 10 / int('2')
    print('result:', r)
except ValueError as e:
    print('ValueError:', e)
except ZeroDivisionError as e:
    print('ZeroDivisionError:', e)
else:
    print('no error!')
finally:
    print('finally...')
print('END')

int()函数可能会抛出ValueError,所以我们用一个except捕获ValueError,用另一个except捕获ZeroDivisionError。如果没有错误发生,可以在except语句块后面加一个else,当没有错误发生时,会自动执行else语句。

没有错误发生,except语句块不会被执行,但是finally如果有,则一定会被执行(可以没有finally语句)。

logging

logging可以控制日志输出在哪个地方,怎么输出及控制消息级别来过滤掉那些不需要的信息。

日志一共分成5个等级,从低到高分别是:DEBUG > INFO > WARNING > ERROR > CRITICAL

  • DEBUG:详细的信息,通常只出现在诊断问题上。
  • INFO:确认一切按预期运行。
  • WARNING:一个迹象表明,一些意想不到的事情发生了,这个软件还能按预期工作。
  • ERROR:更严重的问题,软件没能执行一些功能。
  • CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行。

这5个等级,也分别对应5种打日志的方法: debuginfo warningerrorcritical。默认的是WARNING,当在WARNING或之上时才被跟踪。

将日志输出到控制台

import logging

# 通过logging.basicConfig函数对日志的输出格式及方式做相关配置
logging.basicConfig(level=logging.WARNING,
                    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')

# use logging
logging.info('this is a loggging info message')
logging.debug('this is a loggging debug message')
logging.warning('this is loggging a warning message')
logging.error('this is an loggging error message')
logging.critical('this is a loggging critical message')

执行后控制台输出:

2018-06-27 14:18:37,909 - t1.py[line:9] - WARNING: this is loggging a warning message
2018-06-27 14:18:37,909 - t1.py[line:10] - ERROR: this is an loggging error message
2018-06-27 14:18:37,909 - t1.py[line:11] - CRITICAL: this is a loggging critical message

将日志输出到文件

只需要在logging.basicConfig函数中设置好输出文件的文件名和写文件的模式:

import logging

logging.basicConfig(level=logging.WARNING,
                    filename='./log.txt',
                    filemode='w',
                    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')

# use logging
logging.info('this is a loggging info message')
logging.debug('this is a loggging debug message')
logging.warning('this is loggging a warning message')
logging.error('this is an loggging error message')
logging.critical('this is a loggging critical message')

参考:https://www.cnblogs.com/xielisen/p/6817807.html

评论

随便说点,聊聊天~