gpt4 book ai didi

python - 在多行上进行相同的更改(尝试除外) - python

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:58 25 4
gpt4 key购买 nike

程序员可以通过多种方法使编程和重构变得更容易、更简单,Python 在这方面非常擅长。

我很好奇是否有一种更优雅的方法来解决我的问题,而不是一遍又一遍地暴力编写相同的代码。

情况:

我正在编写代码。有许多相同的方法按顺序调用不同的参数。

例如 - 我有这个代码:

...
...
my_method(1)
my_method(2)
my_method(3)
my_method(4)
...
my_method(10)
...

所以我写了这段代码,一切正常,但突然我发现我需要制作一个 log 文件,所以我必须在每个方法上放置 try- except ,这样代码就会看起来像这样:

...
...
try:
my_method(3)
except Exception as e:
print_to_file(log.txt,str(e))
...
...
try:
my_method(8)
except Exception as e:
print_to_file(log.txt,str(e))
...
...

除了更改每个 my_method(x) 调用并将其放入 try- except 子句之外,我还有更好的选择吗?我知道这是程序员的错误,一开始就必须考虑这一点,但这些情况确实发生了。

编辑:根据答案 - 上面的代码是简单的示例。在实际代码中,没有给出 int 参数,但没有给出逻辑的日期,因此我无法将其放入循环中。假设无法生成参数。

最佳答案

如果您使用 python 提供的 logger,您可以将异常输出重定向到日志,而不必在各处放置大量 try block :

import os, sys
import logging
logger = logging.getLogger(__name__)
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)

def handle_exception(exc_type, exc_value, exc_traceback):
if issubclass(exc_type, KeyboardInterrupt):
sys.__excepthook__(exc_type, exc_value, exc_traceback)
return

logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))

sys.excepthook = handle_exception

if __name__ == "__main__":
raise RuntimeError("Test unhandled")

现在抛出异常,您不需要 try block ,无论如何它都会写入日志

ref

关于python - 在多行上进行相同的更改(尝试除外) - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31618104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com