Я смотрю на создание вспомогательного метода для установки сообщения об исключении, автоматическую настройку String.Format, добавление внутренних исключений, установку кодов завершения командной строки и т. Д .; что-то вроде:
public static void MyExceptionHelper(ExitCode code, string message) {}
public static void MyExceptionHelper(ExitCode code, Exception e) {}
public static void MyExceptionHelper(ExitCode code, Exception e, String message) {}
public static void MyExceptionHelper(ExitCode code, Exception e, String message, params object[] args) {}
// etc...
В BCL есть несколько статических классов, которые делают подобные вещи (например, System.ThrowHelper в mscorlib).
Где лучшее место, чтобы положить их? Как перегруженные конструкторы на исключении, в отдельном статическом классе (например, BCL), как статические методы на самом исключении или где-то еще?