d - 无法捕获 GDC 中火卫一引发的异常

  • 本文关键字:异常 GDC dmd gdc
  • 更新时间 :
  • 英文 :


我写了一个小的D程序。当用DMD编译时,它工作得很好,但是GDC和LDC2都不能捕获从Phobos抛出的异常(由GDB证明)。我该如何解决这个问题?

示例代码:

import std.process;
void main(){
  try
  {
    spawnProcess(["/dev/null"]);
  }
  catch (Throwable p)
  {
    return;
  }
}

,它在编译和执行时以SIGABRT终止,即使catch块应该捕获processsexception。

编译器:ldc2基于LLVM 3.3和DMD 2.063.2(通过ldmd2 -O -inline -release调用),但也发生在gdc 4.8.2(通过gdmd -O -inline -release调用)。当我使用dmd -O -inline -release进行编译时,即使我只捕获processsexception而不捕获Throwable,也会捕获异常。

正如Adam D. Ruppe所指出的,这可能是库不匹配。确保通过自定义dmd.conf使用正确的库。别忘了给你的libphobos添加一个-L开关。

二进制文件下载在这里

相关内容

  • 没有找到相关文章

最新更新