简友广场想法

Pthon编程:10- 异常处理&日志

2023-06-27  本文已影响0人  小小一颗卤蛋

异常处理

try except语句中,至少要有一个except,也可以有多个.也可以加上一个else语句,一个finally语句.
如下

 try:
     int1=int(input('请输入一个数字:  '))
     print(1/int1)
 except ZeroDivisionError:  #0作为分母的异常
     print('0不能作为分母')
 except ValueError:  #输入的是非数字的异常
     print('您输入的不是数字')
 except:  #如果不指定异常类型,则捕获任何出现的异常
     print('程序出现错误')
 else:  #当程序未捕获到任何异常,会执行else中的语句
     print('没有出现异常')
 # finally:  #无论程序是否出现异常,都会执行
 finally:
     print('程序执行完毕')

常见的异常

 print(NameError.__base__)
 print(IndexError.__base__)
 print(LookupError.__base__)
 print(FileNotFoundError.__base__)
 print(OSError.__base__)
 print(Exception.__base__)

手动抛出异常

 try:
     raise IOError  # 假装这里有异常
 except IOError:
     print('程序出现了IO错误')

日志模块

日志等级,默认打印WARNING以上级别,可以设置level改为别的级别

 import logging
 logging.basicConfig(level='DEBUG')
 logging.debug('出现debug信息')
 logging.info('出现info信息')
 logging.warning('出现warning信息')
 logging.error('出现error信息')
 logging.critical('出现critical信息')

将异常信息记录到日志

time.strftime('%y-%m-%d %H:%M:%S')  记录时间
traceback.format_exc()  返回异常的信息

实例说明如下:

 import time
 import logging
 import traceback
 logging.basicConfig(filename='D:/log210607.log',filemode='a+')
 try:
     int1=int(input('请输入一个数字:  '))
     print(1/int1)
 except ZeroDivisionError:  #0作为分母的异常
     logging.error(time.strftime('%y-%m-%d %H:%M:%S')+traceback.format_exc())
 except ValueError:  #输入的是非数字的异常
     logging.error(time.strftime('%y-%m-%d %H:%M:%S')+traceback.format_exc())
 except:  #如果不指定异常类型,则捕获任何出现的异常
     logging.error(time.strftime('%y-%m-%d %H:%M:%S')+traceback.format_exc())

loguru

 import os
 from loguru import logger
 logger.debug('你好')
 logger.info('你好')
 logger.warning('你好')
 logger.error('你好')
 logger.critical('你好')
 
 if not os.path.exists('./log'):
     os.mkdir('./log')
 logfile='./log/log1.log'
 logger.add(logfile,rotation='200KB',compression='zip')  #rotation拆分日志文件,每个日志200KB,compression压缩日志
 logger.remove(handler_id=None)  #这句代码表示信息不在控制台显示
 for i in range(10000):
     logger.info('松勤')
 def fun1(a,b):
     return a/b
 try:
     fun1(2,0)
 except:
     logger.exception('报错')
上一篇 下一篇

猜你喜欢

热点阅读