传递WideString以引发异常

时间:2017-03-01 08:11:23

标签: 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;

这个想法是本地化。

1 个答案:

答案 0 :(得分:5)

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

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

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