快乐处理python中的异常?

时间:2018-03-28 12:39:05

标签: python python-3.x exception-handling

我正在寻找更多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'   找不到文件

有什么我做错了或者它的快乐不能像我预期的那样起作用吗?

1 个答案:

答案 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的来源