Хорошей практикой является создание исключений для отдельных классов (не внутренних классов).Это делает их более пригодными для повторного использования, так что класс A не использует класс, вложенный в класс B. Поскольку ваша библиотека классов становится больше, вам не придется искать внутренний класс, чтобы быть более дружественным к разработке.
Исходя из этого, рекомендуется использовать только один класс на файл с именем файла, представляющим имя класса.
При этом я склонен делать исключения во внутренних классах класса, который выбрасываетих, если они не являются достаточно общими для использования другими классами.Обычно из-за сроков разработки и того факта, что я знаю, что класс исключений достаточно специализирован, чтобы его нельзя было использовать где-либо еще.Я постепенно перехожу к тому, чтобы поместить их в отдельные файлы в качестве практики, когда сроки разумны, потому что более утомительно для доступа к внутреннему классу.