- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
以有限的方式,我想知道为什么在 Python 中使用 bare-except 如此不受欢迎。
如果我有一个完整的程序正在运行并且我做了类似的事情,我就会明白这一点:
import sys
from application import program
try:
program.start()
except:
print >> sys.stderr, "It didn't work"
我隐藏了重要信息,没有得到任何实际输出。但是让我们考虑一下我正在为配置设置执行 IO 操作,并且如果配置不存在或损坏,我有一个模板数据集可以使用:
import os
from config import load_data
from template import save_data
dir = os.path.expanduser('~')
path = os.path.join(dir, 'config.txt')
try:
load_data(path)
except:
save_data(path)
我想在这种情况下,构建一个捕获操作的自定义异常是否更好,以便它为阅读代码的人提供更多信息?
最佳答案
你的例子是一个极好的例子,说明了为什么这是个坏主意。您的程序不是“如果数据不存在或损坏,则用模板覆盖它”。您的程序是“如果出现任何问题,请尝试使用模板覆盖数据”。
例如,如果您在尝试加载数据时执行的代码中有拼写错误,您的程序将不会通知您,而是用模板覆盖所有(有效!)数据。这可能是一个相当灾难性的错误,无论是在数据丢失方面,还是在您的测试用例遗漏的不常运行的代码路径中出现拼写错误时,您如何轻松地说服自己这不可能是问题。
另一个出错的例子是,如果用户决定尝试使用 Ctrl+C 中止程序。您会捕捉到 KeyboardInterrupt
并立即破坏他的所有数据。
关于python - Bare-Except 不受欢迎的任何原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30294977/
我一直在阅读有关 Git 中裸和非裸/默认存储库的信息。我一直无法很好地(理论上)理解它们之间的区别,以及为什么我应该“推送”到裸存储库。这是交易: 目前,我是唯一一个在 3 台不同计算机上从事一个项
这个问题相当广泛,但我什至无法在 ARMv7 ARM、MPCore TRM、GIC 架构手册中找到起点,...所以请原谅我的含糊不清。 我有一个用于 Raspberry Pi 2 的简单裸机内核,用于
这个问题相当广泛,但我什至无法在 ARMv7 ARM、MPCore TRM、GIC 架构手册中找到起点,...所以请原谅我的含糊不清。 我有一个用于 Raspberry Pi 2 的简单裸机内核,用于
很抱歉,如果这在其他地方有所涉及,但我找不到答案。 我有一个名为 bare.git 的裸仓库,它是从中克隆开发仓库的仓库。一切正常。 我想知道 bare.git 从哪里获取源文件。它们是否作为二进制文
我在错误的目录(在服务器中)中运行了 git --bare init。我在该目录中看到文件 branches、config、deps 等。我该如何撤消它? 最佳答案 由于您执行了“--bare”初始化
请注意此 GHCi session 中的第二行。允许我使用“裸”数字作为值而不是调用构造函数的 Latitude 类型是什么?我想对我自己的一些类型做类似的事情。 λ> :m + Data.Geo.G
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
以有限的方式,我想知道为什么在 Python 中使用 bare-except 如此不受欢迎。 如果我有一个完整的程序正在运行并且我做了类似的事情,我就会明白这一点: import sys from a
我们想要进行构建验证,我们想要确保新版本包含前一个版本的所有提交。我们正在标记每个新版本。 我们正在使用:git merge nextversiontag --no-commit --ff-only,
我刚刚创建了一个 Bitbucket 帐户,并且已经向 Bitbucket 服务器提交了一些内容。我还邀请我的团队检查 Bitbucket 存储库是否有更改。 但是,过了一段时间,我发现一篇文章说每个
我有一个 git 存储库,它有着悠久而奇怪的历史。我不知道开发人员对这个存储库做了什么,也无法控制他们现在用它做什么。 但我需要克隆这个存储库(用于 redmine 集成)并定期获取所有更改。 我要做
我的团队成员将处理一些纯文本文件。我希望他们使用 eclipse,而不是使用普通的文本编辑器,这样我们就可以利用使生活更轻松的插件……例如 svn 插件。 因此,我想为他们提供 Eclipse 安装,
我目前有Prometheus安装了裸机并作为docker容器运行。我使用它来监视我们的基础架构以及Kubernetes集群。 为了进行此HA设置,我尝试在2个Prometheus实例之前部署代理或查询
所以我一直被这个奇怪的 git 问题所困扰,我自己和其他一些开发人员都无法解决。在这里: 我创建了一个裸仓库,用于在测试服务器上使用 git 管理网站更改。对于此示例,存储库位于:/home/webs
CoffeeScript 中的参数--bare 已更改。有谁知道什么新参数具有相同的功能? 最佳答案 默认情况下,当 coffee-script 编译文件时,它使用“自调用匿名函数”包装结果,如下所示
这可能很糟糕,我不确定。 假设我们有一个带有工作目录的 repo “产品” /product /product/command.script /product/config/ (bare git re
我正在阅读这些 two articles .但是我仍然没有得到 --bare 选项。如果服务器没有工作目录,并且如果团队的新成员克隆了项目,那么该人将不会获得任何内容。 任何进一步的说明都有助于了解为
git --bare init 错了吗? 应该是: git init --bare 最佳答案 git --bare init 并没有错,它只是表达相同(尽管有错误)操作的不同方式。 快速浏览一下顶层
我从一些现有的 wsdl 中生成一些 WebServices 我使用 Maven 来执行此操作,但使用 生成了一些 Web 服务 @SOAPBinding(parameterStyle = SOAPB
文档状态 --bare Create a bare repository. If GIT_DIR environment is not set, it is set to the current wo
我是一名优秀的程序员,十分优秀!