2017-03-01 4 views
0

zu erhöhen, wie ich Unicode-String Ausnahme pas kann Nachrichten erhöhen und es fangen:Pass Wide eine Ausnahme

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

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

Die Idee ist, die Lokalisierung.

+1

Sie müssen Ihre eigene Exception-Klasse verwenden, die WideString-Nachrichten unterstützt. Sie müssen diese Ausnahmen selbst behandeln. – kobik

+0

Siehe auch [Behandeln einer Unicode-Zeichenfolge in Delphi-Versionen <= 2007] (http://stackoverflow.com/q/383195/576719). –

Antwort

4

Sie können eine Ausnahmeklasse deklarieren, die WideString statt string verwendet. Ein hervorragendes Beispiel dafür finden Sie in der TNT Unicode-Bibliothek. Diese Bibliothek führt nicht nur eine Unicode-Ausnahmeklasse ein, sondern stellt auch alle zugehörigen Scaffoldings bereit, die erforderlich sind, damit die Ausnahmebehandlungsmechanismen mit Unicode-Ausnahmen umgehen.

Angenommen, eine ausgelöste Ausnahme erreicht den Exception-Handler der obersten Ebene. Sie möchten Unicode-fähig sein, und die TNT-Bibliothek stellt dies sicher. Oder Sie möchten, dass Betriebssystemfehler lokalisiert werden. Auch hier ist etwas zusätzlicher Aufwand erforderlich und die TNT-Bibliothek kümmert sich darum.

Mein Rat ist, dass, wenn Sie mit Unicode in Ihrer Anwendung in einem Pre-Unicode-Delphi arbeiten möchten, sollten Sie die TNT Unicode-Bibliothek übernehmen. Wenn Sie es aus irgendeinem Grund nicht übernehmen können, verwenden Sie zumindest seinen Quellcode zur Inspiration in Ihrer eigenen Kodierung.

+0

okay, ich versuche, TNT Lib scheinen ok –

+0

danke. Raise WideException.Create (GetResStr ('Error_Empty', Error_Empty)); –