mne plot出错_python异常处理,日志处理

整体的流程try:'需要测试代码块'

except +异常的类型,如果实在知道会出现什么样的类型,可以直接使用Exception ,它是所有异常类型的根#在这也可以使用except + 异常类型 + as 变量 : 这可以将捕获到的异常类型赋值该变量

else:'当try的使用的代码没有出现异常的时候,就执行这里的命令'

finally:'无论try下面有没有抛出异常,这里的命令都会执行'

f0d7e346564659f91bf521cec3d58ddb.png

也可以将多个异常的类型在同一个except 下面执行

try:

input(“please input the frist number:”)

input(“please input the second number:”)

except(TypeError,NameError): #多个异常,无论匹配到哪个都可以执行下面的命令

print(“what you intput is  wrong”)

如果想知道发生的是什么异常,可以这样子操作

except(TypeEorror,NameError) as pan:

print(pan)

这样的话,在出现错误的时候会打印相应的错误,之后再正常运行其他的命令

当用户没有按照程序的提示直接乱输入东西的时候, 我们可以通过抛出异常,去通知用户

引发异常

raise  语句 引发异常用的数据,一般是用于测试

raise Exception:   只是显示默认的异常,是所有异常的根

raise Exception(‘I love my mother’)  如果出现这类的异常的话,会直接显示自己定义的信息

注意的是当程序运行到raise的时候就会中断程序,并将异常返回给调用方,如果调用方没有处理的话,最终会抛给用户

自定义异常(只是创建一个类,并继承Exception)

classGenderException(Exception):pass

classPerson:def __init__(self,name,gender):

self.name=name

self.gender=genderdefGo_to(self):if self.gender != '男':try:raise GenderException('你确定你是男的')exceptGenderException:print('我的天')else:print('你好啊,你来了')

p1= Person('cc','女')

p1.Go_to()

在调试的时候常用的模块是traceback,用来追踪异常返回信息importtracebacktry:raise SyntaxError("traceback test")except:

traceback.print_exc()#这只是打印异常的返回信息,可以在括号内设置保存

traceback.format_exc()#这个是获取异常的返回信息,但是没有打印

85c3416b4b3394f14d97d7280dd2a7a5.png

注意的是如果在except 下使用raise 后面没有带任何的错误的类型的话,那么其引发的异常是重新引发该子句捕获到的异常

例如异常程序在读取代码的时候, 用户使用CTRL +C 中断了程序,这是就会相应的动作表示程序中断

157c70293dae453cfcdbe48691dd21a5.png

出现这种情况的时候,如果想要程序还是能够正常执行,这时就可以使用finally 执行剩余的命令,例如上面打开了一个文件,这是就可以通过使用finally 将这个文件关闭

自定义的异常,在正常的情况下,自己虚拟出来的一个异常

cff41c05eae261d9a9d165e67291b43a.png

日志处理

#import logging## filename: 文件名## format: 数据的格式化输出. 最终在日志文件中的样子## 时间-名称-级别-模块: 错误信息## datefmt: 时间的格式## level: 错误的级别权重, 当错误的级别权重⼤于等于leval的时候才会写⼊⽂件#当前配置表示 0以上的分数会被写文件#CRITICAL = 50#FATAL = CRITICAL#ERROR = 40#WARNING = 30#WARN = WARNING#INFO = 20#DEBUG = 10#NOTSET = 0

import logging

logging.critical("我是critical") # 50分. 最高的

logging.error("我是error") # 40分

logging.warning("我是warning")

logging.info("我是info")

logging.debug("我是debug")

logging.log(1, "我什么都不是")

上面只是简单将内容输出到屏幕,一般都是将日志输出到文本中的如下:

方案1 :只是使用logging模块中的basicConfig (输出位置,日志格式,日志等级)

importlogging

logging.basicConfig(filename='x1.log',

format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',

datefmt='%Y-%m-%d %H:%M:%S',file =

level=30) #在这里设置记录的是什么等级以上的日志

logging.critical("我是critical") #50分. 最高的

logging.error("我是error") #40分

logging.warning("我是warning")

logging.info("我是info")

logging.debug("我是debug")

logging.log(1, "我什么都不是")importtracebacktry:print(1/0)exceptException:

logging.error(traceback.format_exc())#用法

print("出错了")#方案二:可以将日志写入到多个文件中

importlogging#创建一个操作日志的对象logger(依赖FileHandler)#

file_handler = logging.FileHandler('自定义操作日志文本1.log', 'a', encoding='utf-8')

file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s"))

logger1= logging.Logger('qq', level=20) #这里是设置记录日志的name 和level等级,只有高于这个等级的才会写入到日志里面

logger1.addHandler(file_handler) #把文件助手和日志对象绑定

logger1.error('我是A系统出错了') #记录日志

#再创建一个操作日志的对象logger(依赖FileHandler)

file_handler2 = logging.FileHandler('自定义操作日志文本2.log', 'a', encoding='utf-8')

file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s -%(levelname)s -%(module)s: %(message)s"))

logger2= logging.Logger('B系统', level=20)

logger2.addHandler(file_handler2)importtracebacktry:print(1/0)exceptException:

logger2.critical(traceback.format_exc())print("出错了. 请联系管理员")print("程序继续知悉个")

format参数中可能用到的格式化串:

%(name)s Logger的名字

%(levelno)s 数字形式的日志级别

%(levelname)s 文本形式的日志级别

%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有

%(filename)s 调用日志输出函数的模块的文件名

%(module)s 调用日志输出函数的模块名

%(funcName)s 调用日志输出函数的函数名

%(lineno)d 调用日志输出函数的语句所在的代码行

%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示

%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数

%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒

%(thread)d 线程ID。可能没有

%(threadName)s 线程名。可能没有

%(process)d 进程ID。可能没有

%(message)s用户输出的消息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值