Я пишу пользовательский .Net SDK для программы сопоставления MapInfo Pro, mapinfo предоставляет только два метода для использования по COM void Do(string cmd)
и string Eval(string cmd)
. Когда вы используете один из этих методов и вы делаете что-то invaild, он возвращает COMException с сообщением об ошибке, и я получаю код ошибки из MapInfo. Так, например, сообщение об ошибке выглядит следующим образом:Создание классов исключений для разных кодов ошибок
418 "Table not found."
Теперь я хотел бы бросить какое-то смысловое полное исключение, а не просто исключение с номером и сообщением, что люди должны поймать затем использовать if
блок проверьте, какая ошибка, что-то, что они говорят, что они только хотят поймать и сделать что-то, что означает полное. Что-то вроде TableNotFoundException
.
Самая большая проблема в том, что в настоящее время существует 1999
Возможные ошибки, теперь я не хочу, чтобы класс исключения для всех этих ошибок.
Идея SDK заключается в том, что люди используют мои объекты и методы, а не Do
и Eval
(они могут использовать их, если они захотят).
Должен ли я,
- везде в моем SDK, который я называю
Do
иEval
использовать TRY улов, а затем проверить код ошибки и бросить что-то больше смысла полный оттуда, потому что я знаю, какие ошибки я должен получить ,
или
- У меня есть somekind Бога списка поиска в
Do
иEval
, что когдаCOMException
брошено это поисковые операции код ошибки и бросает ошибку Внушительные оттуда? Смысла не должны обернуть каждый вызовDo
иEval
в попытке поймать блоков (есть много звонков)
Немного сложная вещь, чтобы объяснить, так что я надеюсь, что люди могут понять.
Спасибо.
++ Что он сказал, особенно о небольшой иерархии исключений. – Dustman