Я использую Mkdir от Free Pascal System.Как вы определяете, какое исключение выбрано MkDir?
Если каталог уже существует с тем же именем, который передается этой процедуре, возникает ошибка. С директивой компилятора $IOCHECKS, установленной в {$ I-}, программа продолжается, но для IOResult установлен код ошибки 5. Без {$ I-} директивы компилятора выдается исключение. Если он не пойман, программа выходит с кодом возврата 5, что отражает ошибку.
Я хотел бы поймать это СПЕЦИФИЧЕСКОЕ исключение, как бы там ни называлось. Тем не менее, я не знаю, как найти точное название возбужденного исключения.
Примечание: Я принял ответ дал, но есть одно утверждение, что я не согласен с:
Ошибка выполнения для преобразования исключением является особенностью SysUtils.
В моем тестировании просто добавление раздела try/except/end останавливает отмену стандартной программы ошибок времени выполнения (с сообщением в stdout). Вместо этого поток программы переходит к блоку «except..end» и продолжается после этого. Однако без использования блока SysUtils вы не можете определить, какое исключение было создано, поскольку классы исключений определены там.
Спасибо за ответ. Оглядываясь на документацию для MkDir, он говорит «ошибка времени выполнения» и не упоминает об исключении. Однако, если я помещаю вызов MkDir в блок try/except и просто записываю WriteLn в другой части, я вижу, что это сообщение напечатано, даже без SysUtils в программе. Пробовать/исключать блоки также обрабатывать ошибки времени выполнения? – Scooter
Нет, но sysutils перехватывает процедуру ошибки времени выполнения и повышает их как исключение. –
Мой код переходит в раздел «except» на сбой MkDir, даже если в программе не используется «Uses SysUtils». Возможно, SysUtils автоматически включается как System. – Scooter