我写了一个小的D程序。当使用DMD编译时,它工作得很好,但是GDC和LDC2都不能捕获从Phobos抛出的异常(由GDB验证)。我该如何解决这个问题?
示例代码:
import std.process;
void main(){
try
{
spawnProcess(["/dev/null"]);
}
catch (Throwable p)
{
return;
}
}它在编译和执行时会死于SIGABRT,即使catch块应该捕获ProcessException。
编译器:基于LLVM3.3和DMD 2.063.2的ldc2 (通过ldmd2 -O -inline -release调用),但也适用于gdc 4.8.2 (通过gdmd -O -inline -release调用)。当我使用dmd -O -inline -release进行编译时,即使我只捕获ProcessException而不捕获Throwable,也会捕获异常。
发布于 2015-03-24 18:06:18
正如Adam D. Ruppe所指出的,这可能是库不匹配。确保通过自定义dmd.conf使用正确的库。别忘了在你正确的库中添加一个-L开关。
下载的二进制文件是here。
https://stackoverflow.com/questions/22461561
复制相似问题