В одном проекте, над которым я работал, корневой класс используемой иерархии исключений захватил стек вызовов в конструкторе на тот случай, если позже понадобится информация для отладки после того, как исключение будет перехвачено. Это была достойная идея, хотя, если вы ловите и «обрабатываете» исключение, то, когда оно было сгенерировано, не должно иметь большого значения.
Другими словами, если вам небезразлична эта информация (контекст «кто» ее выбросил), вам, вероятно, не следует использовать исключение для сообщения об этом условии, или, возможно, вы не должны его перехватывать в первое место. Необработанные исключения вызывают сбои, давая вам аварийный дамп в тот момент, когда было сгенерировано исключение.