exception - 无法在 listenTCP 函数调用的委托(delegate)中抛出异常

标签 exception exception-handling d vibed

由以下代码生成的二进制文件在一台计算机 (Windows 8 x64) 上完美运行,但在另一台计算机 (Windows Server 2012 R2 Standard x64) 上崩溃:

import std.stdio;

import vibe.vibe;

void new_request(TCPConnection conn)
{
  writeln("before");

  try
  {
    throw new Exception("Exception");
  }
  catch (Throwable ex)
  {
    writeln(ex.msg);
  }

  writeln("after");
}

void main()
{
  auto f = toDelegate(&new_request);
  listenTCP(1605, f);
  runEventLoop();
}

在 Windows 8 x64 上输出

before
Exception
after

Windows Server 2012 R2 Standard x64 上的输出

before

然后崩溃。

在某些计算机上,我似乎无法在listenTCP函数调用的委托(delegate)中抛出任何异常。

这是众所周知的行为吗?这是一个错误吗?我应该将它报告给 vibe.d 论坛还是其他地方?

我正在使用 DMD 2.068.2、DUB 0.9.24 和 vibe.d 0.7.24。

dub.json 看起来像这样:

{
    "name": "vibe_helper",
    "dependencies": {
        "vibe-d": "==0.7.24"
    },
    "versions": ["VibeCustomMain"]
}

最佳答案

由于 discussion在 vibe.d 官方论坛上,此行为似乎与已打开的 issue 有关对于 DMD。

关于exception - 无法在 listenTCP 函数调用的委托(delegate)中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33510395/

相关文章:

assembly - stdcall asm 浮点参数

java - 将文件传递给另一个方法时出现矛盾的异常

Java try block 代码不执行

java - 了解 UnsupportedOperationException

java - 使用 JUnit 测试异常。即使异常被捕获,测试也会失败

d - 返回过滤后的范围

php - 执行自定义错误处理程序后执行默认异常处理程序

Java 8 - 异常关闭流?

c++ - 如何正确离开临界区?

linux - DMD2 无法在 Linux、amd64 上编译共享库