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

引发异常时如何修改Python追溯对象?

杜浩壤
2023-03-14
问题内容

我正在研究一个第三方开发人员用来为我们的核心应用程序编写扩展的Python库。

我想知道引发异常时是否可以修改回溯,因此最后一个堆栈帧是对开发人员代码中库函数的调用,而不是对引发异常的库中的行的调用。堆栈底部还有一些框架,其中包含对第一次加载我理想上也希望删除的代码时使用的函数的引用。

在此先感谢您的任何建议!


问题答案:

不更改回溯怎么办?您要求的两件事都可以通过不同的方式轻松完成。

  1. 如果库中的异常捕获在开发人员的代码中,而引发了新的异常,那么原始的回溯当然会被抛弃。通常,这就是异常的处理方式……如果您只允许引发原始异常,但您要对其进行删节以删除所有“上”帧,则实际的异常将毫无意义,因为回溯中的最后一行不会本身有能力提出例外。
  2. 要删除最后几帧,您可以请求缩短回溯…诸如traceback.print_exception()之类的参数使用“ limit”参数,可用于跳过最后几个条目。

话虽如此,如果您确实需要的话,应该很有可能对追溯进行补救…但是您将在哪里做呢?如果在顶层的某些包装器代码中,则可以简单地获取回溯,进行切片以删除不需要的部分,然后使用“回溯”模块中的函数根据需要进行格式化/打印。



 类似资料:
  • 下面是我生成PDF的代码: 下面是我用来绘制多个字符串的代码: 此代码正常工作,但如果我将更改为,它将引发以下异常: 起初,我认为这是因为有些数据不存在,无法编写,但如果我不更新Voly,它就可以正常工作。然后我认为这是一个问题,当创建了一个新页面但流存在时,没有创建PDPageContentStream。 提前感谢您的帮助!

  • 嗨,我正在尝试建立一个从visual Studio2019/VB.NET到phpmyadmin的连接,我试着按照YouTube的教程学习,但当我尝试连接时,我一直遇到这个错误,我甚至尝试了mysql.data的其他验证。

  • 问题内容: 我有这段代码,它给了我并发修改异常。即使看不到任何并发修改,我也无法理解为什么继续得到它。 问题答案: 为了避免,你应该这样编写代码: 允许你在迭代期间修改列表,但不能在创建和使用列表之间进行修改。

  • 当我使用temp=iterator.next()时,sort方法会导致并发修改错误。你能帮我解决并发修改错误吗。我给出了整个类的代码,但我只是尝试完成sort方法。事先谢谢你的帮助。 我必须对ArrayList中的所有数组进行排序。

  • 问题内容: 当我使用下面的代码时,在什么情况下会得到异常。 任何人都可以帮忙吗???????? 问题答案: HTTP状态代码是服务器的响应,因此,如果您控制服务器,则可以使其返回所需的任何错误。如果您无法控制服务器,则可以尝试发送错误/无效的请求,以便服务器进行投诉。 在服务器端这样的事情:

  • 问题内容: 您能否告诉我在单线程环境中是否有可能发生并发修改异常的方法,我下面发布的以下应用程序由两个线程组成,请告诉我我也可以在单个线程中看到相同的异常..请劝告 是的,我知道,在单线程环境中,此错误可能会出现..如下面的代码所示。 请告知解决该问题的方法是什么..这样就不会出现此错误.. !! 问题答案: 可以在单线程环境中引发A。只要在不应该​​在上下文中修改对象的情况下使用它,就不必在另一