我有一段代码,它加载了一个库,但是死了。我已经用try/except传递将它包围了,但是它仍然死了。有谁知道如何克服错误并继续下面的打印语句:

      try:
         library.load("test_data/polo.lib")
      except:
         pass

     defines = library.get_defines()
     print defines
     assert ( len(defines) == 3), "Make sure we have 3 defines"

我在library.load代码行之后立即得到的错误是:
scci18910> python test_001_library.py
Loading library test_data/polo.lib
terminate called after throwing an instance of 'std::string'
Abort

最佳答案

您无法捕获异常,因为没有python异常被抛出。
但是您可以使用子流程绕过Abort:

创建文件list_defines.py:

library.load("test_data/polo.lib")
print(library.get_defines())

然后:
import subprocess

try:
    defines = parse_string_to_list_somehow(subprocess.check_output('python', '-c', 'list_defines.py'))
except CalledProcessError as e:
    print('Library defines list failed', e)
    defines = []

附言示例适用于python3

关于python - 除了已加载的C库中的Python错误之外,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43751989/

10-10 20:45