Если это - выполнение кода в цикле, который, вероятно, вызовет исключение много раз, то выдавание исключения не является хорошей вещью, потому что они являются довольно медленными для большого N. Но нет ничего неправильно с выдачей пользовательских исключений, если производительность не является проблемой. Просто удостоверьтесь, что у Вас есть основное исключение что они все inherite, названный BaseException или чем-то как этот. BaseException наследовал Систему. Исключение, но все Ваши исключения наследовало BaseException. У Вас может даже быть дерево Типов исключительной ситуации для группировки подобных типов, но это может или не может быть излишеством.
Так, короткий ответ - то, что, если это не вызывает значительную потерю производительности (который это не должно, если Вы не выдаете много исключений), затем идите вперед.
Более того, это, пожалуй, единственная кодировка, которую вы должны когда-либо рассмотреть.
Хорошая литература на эту тему:
Если вы работаете с большим количеством азиатского текста (в большей степени, чем латинский), вы можете рассмотреть UTF-16. UTF-8 может точно представлять весь диапазон символов Unicode, но он оптимизирован для текста, который в основном состоит из ASCII. UTF-16 занимает мало места по всей базовой многоязычной плоскости .
Но UTF-8, безусловно, «достаточно хорош» - не будет коррупции просто потому, что вы используете UTF-8 поверх , скажем, UTF-16.
Насколько мне известно, UTF-8 предназначен для охвата всех этих ранних вариаций Unicode, так что да, его можно использовать поверх UCS-2. См. http://www.unicode.org/versions/Unicode5.1.0/ и посмотрите на боковую панель, чтобы найти главы книги 5.0; части 9–12 должны быть тем, что вам нужно.