传递WideString引发异常

Ern*_*kov 0 delphi unicode delphi-2006

我如何通过Unicode字符串异常引发消息并捕获它:

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

except
on E: Exception do 
   mError(E.Message);
   exit;
end;
Run Code Online (Sandbox Code Playgroud)

这个想法是本地化。

Dav*_*nan 5

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

例如,假设引发了一个到达顶级异常处理程序的异常。您希望它是Unicode感知的,并且TNT库确保了这一点。或者您希望将操作系统错误本地化。再次,涉及一些额外的工作,TNT库负责处理。

我的建议是,如果您希望在应用程序中使用Unicode,请在Unicode之前的Delphi中采用TNT Unicode库。如果由于某种原因您不能采用它,请至少在您自己的编码中使用其源代码来激发灵感。