On Sunday 13 March 2011 22:45:38 ZY Zhou wrote: > it doesn't make sense to add try/catch every time you use > tolower/toupper/foreach on string. No one will do that. > You either throw exception when convert invalid utf8 bytes to string, or > never throw exception and use invalid UTF32 code in dchar to represent > invalid utf8 code. > > string s = "\x0A"; // this is the right place to throw the exception (or > compile error) > s.tolower; // no one will add try/catch on this
If you're going to worry about string validity, it should be checked when the string is initially created. If it's not valid, then fix it in whatever way you deem appropriate. After that, you shouldn't have to worry about string validity anymore. Honestly, invalid UTF-8 is pretty rare overall. You'll get it because of a bad file or somesuch, but once the string is valid, it stays valid. So, you really only have to worry about it when you read in files and such. Once the file has been correctly read in, you just use the strings without worrying about it. There shouldn't be a need to use try-catch blocks much of anywhere to worry about invalid unicode. - Jonathan M Davis