传递 WideString 以引发异常

Pass WideString to raise an exception

如何将 unicode 字符串传递给异常引发消息并捕获它:

try
  if some <> some2 then 
    raise Exception.Create('Cannot connect to Sever');
...
...

except
on E: Exception do 
   mError(E.Message);
   exit;
end;

想法是本地化。

您可以声明一个使用 WideString 而不是 string 的异常 class。在 TNT Unicode 库中可以找到一个很好的例子。该库不仅引入了 Unicode 异常 class,还提供了使异常处理机制处理 Unicode 异常所需的所有相关脚手架。

例如,假设引发了一个到达顶级异常处理程序的异常。您希望它能够识别 Unicode,而 TNT 库可确保这一点。或者您希望将操作系统错误本地化。同样,这涉及到一些额外的工作,TNT 库会处理它。

我的建议是,如果您希望在您的应用程序中使用 Unicode,在 pre-Unicode Delphi 中,您应该采用 TNT Unicode 库。如果由于某种原因您不能采用它,至少可以在您自己的编码中使用它的源代码来获得灵感。