我正在寻找更多pythonic方法来处理python中的错误,我发现 merry
如果你从未听说过这里是文件:https://github.com/miguelgrinberg/merry
所以我用merry
写了一些代码from merry import Merry
merry = Merry()
@merry._try
def write_to_file(filename,data):
with open(filename,'w') as file_obj:
file_obj.write(data)
@merry._except(FileNotFoundError)
def fileNotFoundError():
print("File not found")
@merry._except(Exception)
def catch_all(e):
print(f"exception occured :{e}")
@merry._else
def else_clause():
print("no exceptions occured")
path = "C:/Users/User/Desktop1/dataHere.txt"
text = "top secret information"
write_to_file(path,text)
请注意,我更改了
的路径FileNotFoundError
我认为merry会处理错误,但我得到了这个输出:
[merry]抓住了异常
Traceback(最近一次调用最后一次):文件 " C:\ python36 \ lib \ site-packages \ merry.py",第26行,在包装器中 ret = f(* args,** kwargs)File" C:/Users/User/Desktop/merrymerry.py" ;,第7行,in write_to_file open(filename,' w')as file_obj:FileNotFoundError:[Errno 2]没有这样的文件或目录: ' C:/Users/j.sinjaradze/Desktop1/dataHere.txt' 找不到文件
有什么我做错了或者它的快乐不能像我预期的那样起作用吗?
答案 0 :(得分:2)
我认为你误解了你的输出/快乐如何运作。在您的输出中,您有:
[merry] Exception caught
表示merry抓住了异常。然后是异常的回溯,默认情况下快速输出,然后是
File not found
这是你
的结果def fileNotFoundError():
print("File not found")
所以一切正常
<强>附录即可。为什么merry输出异常?
在merry的源代码中(参见你链接的github),有这一行(merry.py:46):
self.logger.exception('[merry] Exception caught')
先前从self.logger
调用创建了 logging.getLogger(logger_name)
,并且异常函数会打印除先前发生的异常的追溯之外提供的消息(有关详细信息,请参阅python logging documentation)。
从源代码中我看不到一种方法来改变这种行为而不触及merry.py
的来源