美文网首页简友广场想法
Pthon编程:10- 异常处理&日志

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

作者: 小小一颗卤蛋 | 来源:发表于2023-06-27 17:41 被阅读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('程序执行完毕')

常见的异常

  • NameError 未定义的变量
  • IndexError 下标越界
  • FileNotFoundError 找不到文件异常
    所有的异常,都是Exception的子类,或者子类的子类,Exception也有一个父类 BaseException
 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('报错')

相关文章

网友评论

    本文标题:Pthon编程:10- 异常处理&日志

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