当前位置: 首页 > 面试题库 >

有没有一种方法可以防止捕获从sys.exit()引发的SystemExit异常?

慕阳文
2023-03-14
问题内容

文档说调用sys.exit()会引发SystemExit异常,该异常可以在外部级别捕获。在这种情况下,我想确定无疑地从测试用例中退出,但是unittest模块会捕获SystemExit并阻止退出。这通常很好,但是我要处理的特定情况是我们的测试框架检测到已配置为指向非测试数据库的情况。在这种情况下,我要退出并阻止运行任何进一步的测试。当然,由于unittest捕获了SystemExit并愉快地继续前进,所以它使我感到沮丧。

到目前为止,我唯一想到的选择是使用ctypes或类似于直接调用exit(3)的东西,但是对于应该非常简单的东西来说,这似乎是一个很丑陋的技巧。


问题答案:

您可以调用os._exit()直接退出,而不会引发异常:

import os
os._exit(1)

这会绕过所有python关闭逻辑,例如atexit模块,并且不会在这种情况下通过您试图避免的异常处理逻辑运行。参数是流程将返回的退出代码。



 类似资料:
  • 在Spock规范中,expect:或then:block中的任何行都被计算并断言为,除非它具有返回类型为的签名。 方法在类中定义如下: 我故意在那里断言,这样它就不会失败。即使失败并出现错误: 如何以及为什么方法调用结果被计算为?

  • 问题内容: 现在我正在做: 有没有更有效的方法直接从Find(或其他搜索功能)中获取带有用户名的slice,而没有struct和range循环? 问题答案: MongoDB的结果始终是文档列表。因此,如果要获取值列表,则必须像以前一样手动将其转换。 使用自定义类型(源自) 另外请注意,如果您要创建自己的类型(从派生),则可以覆盖其取消编组逻辑,并仅从文档中“提取” 。 它看起来像这样: 然后将用户

  • 我正在使用Jersey创建一个RESTful API,其中实现了一个ExceptionMapper类来捕获所有错误。 有没有办法从异常中获取查询字符串?或者实现PreparedStatement并在其中创建一个方法来获取查询字符串?

  • 问题内容: 我正在考虑为我的Java应用程序创建调试工具。 我想知道是否有可能获得堆栈跟踪,就像但没有实际引发异常一样? 我的目标是在任何给定的方法中,转储堆栈以查看方法调用者是谁。 问题答案: 您还可以尝试获取所有活动线程的堆栈跟踪图。

  • 我试图在我的应用程序中使用视图寻呼机实现照片查看器。我能够让系统用户界面消失(导航和状态栏)在一个单一的触摸。我遇到的唯一问题是,每次我使状态栏消失并重新出现时,我在视图寻呼机上的布局开始抖动或跳跃。 我的实现的可视化 我想要实现的是什么 我已经试着按照这个stack over flow post中的建议设置系统ui标志。但它仍然给了我“神经质”的布局反应。 下面的代码是我用来隐藏/显示状态栏的: