Вы не должны ловить ошибки, основываясь на тесте ошибок. Вы должны создать свой собственный класс исключений, который расширяет исключение:
class MyErrorException : Exception { }
и бросай и лови их. (Извините за синтаксис, если он неправильный, я давно не делал C #).
Это, как говорится, бросать и перехватывать ваши собственные исключения вместо того, чтобы распространять их, совершенно нормально, и именно так вы должны делать обработку исключений.