Если функция имеет 2 аргумента и оба выдают исключения, в каком порядке вы бы их подняли и где бы вы ее определили?
Это возникло, когда я писал тест для функции, которая бы принималакаталог на диске и сжать его в файл.Например:
void Compress(string dirPath, string filePath);
Я еще не написал функцию и ставлю свои тесты на место.
Дело в том, что если путь к каталогу не существует, я 'у меня будет исключение для пропущенного брошенного каталога, и если у файла будут разрешения на запись таким образом, я бы выдал исключение, чтобы показать это.Однако что, если оба пути вызовут исключения?Буду ли я бросать первый, второй, еще один третий, или это неизвестное состояние?Мы также рассмотрели вопрос об одном исключении, чтобы сказать «что-то сломалось», но сообщение в каждом случае будет разным, поэтому это не поможет.
Я подумал о нескольких способах решения этой проблемы, таких каквсегда выбрасывать на основе обработки аргументов слева направо или указывать «Если dirPath недействителен, то X выбрасывается иначе, если filePath недопустим, тогда Y выбрасывается» и помещать это в определение интерфейса, чтобы тот, кто его реализует, должен (надеюсь) следоватьэта спецификация.
Просто интересно, как люди будут подходить к этой проблеме.
Для справки, это в C #, но я не думаю, что это проблема конкретного языка.