除了一切 - 这可接受吗?

13 浏览
0 Comments

除了一切 - 这可接受吗?

我经常在其他Stack Overflow的问题上看到有关于不鼓励使用except: pass的评论。为什么这样做是不好的呢?有时候我只是不关心错误是什么,只想继续执行代码。\n

try:
    something
except:
    pass

\n使用except: pass块为什么不好?是什么让它不好?是我对错误进行了pass处理还是我except了所有错误的原因?

0
0 Comments

问题的原因是伪代码被直接执行时并不会产生任何错误,而是被视为完全有效的代码,而不是抛出NameError异常。这可能不是您想要的结果。

解决方法是使用try-except语句时,应该指定具体的异常类型,而不是简单地使用except关键字。这样可以确保只捕获特定类型的异常,而不是所有的异常。

下面是修复后的代码示例:

try:
    something
except NameError:
    pass

通过指定NameError作为异常类型,只有当发生NameError异常时,才会执行except代码块中的内容。这样就可以避免不小心捕获到其他类型的异常。

通过这种方式,可以更好地处理异常,并且可以准确地捕获特定类型的异常,以便进行相应的处理。

0
0 Comments

问题出现的原因是代码忽略了所有的错误,包括内存不足、CPU过热、用户停止请求以及程序退出请求等。这样做太过草率。在开发者的思维中,可能会想要忽略某个网络错误。但是如果发生了一些意外的错误,那么代码将会默默地继续执行,并以完全无法预测的方式导致系统崩溃,无法进行调试。

为了解决这个问题,应该限制自己只忽略特定的错误,而将其他错误传递下去。

0
0 Comments

除了上述内容之外 - 是否可以接受?这个问题出现的原因是人们经常使用通用的except语句来捕获任何异常,但这样做不是一个好的做法。原因如下:

1. 不要捕获任何异常。应该明确指定要捕获的异常类型,只捕获那些你准备从中恢复的异常。

2. 尽量避免在except块中使用pass语句。除非明确需要,否则这通常不是一个好的迹象。

解决方法:

1. 只捕获你真正期望并准备从中恢复的异常,不要捕获所有异常。

2. 在except块中尽量避免使用pass语句,除非确实不需要做任何处理。

3. 如果需要让异常继续向上冒泡并终止应用程序,可以使用raise语句重新抛出异常。

只捕获你真正期望并准备从中恢复的异常,其他异常可能是你应该修复的错误或者你根本没有准备处理的异常。在except块中尽量避免使用pass语句,除非你确实不需要做任何处理。如果需要让异常继续向上冒泡并终止应用程序,可以使用raise语句重新抛出异常。阅读性和可理解性是非常重要的,可以请别人来审查你的代码以检查是否有问题。

0