Почему? Потому что вызов может быть частью более сложной системы. Это задача скрипта -- выяснить, что не получилось, и отработать ошибку. А задача программы -- не нарушить остальную систему.
Записать этот тезис меня сподвигла такая программа, как mediainfo.exe . Я решил ей обработать определённый каталог. Я написал короткий бат-файл с командой for, которая обходила все файлы по дереву и сдавала их mediainfo.exe, а вывод этой команды отправлялся в файл. Что могло пойти не так?
Файлов в папке было много, разных типов. Конечно, не все из них являлись медиа. Но сидеть и думать над списком расширений -- это не моё. Я обработал все файлы. Медиаинфо нормально относится к тому, что ему дают не-медиа файл. В этом случае он выводит только его размер. Я думал, что проблем возникнуть не может. Но они возникли.
Среди файлов нашёлся один не-медиа-файл, который не обрабатывался. Медиаинфо на нём просто зависал без выдачи каких-либо сообщений. Я пошёл гуглить, и обнаружил, что этот случай не единичный. Пользователи периодически жалуются разработчику в том числе и на медиа-файлы, на которых медиаинфо зависает. Далее они отправляют файл разработчику, он что-то исправляет, и в следующей версии всё нормально.
Пока не найдётся следующий такой файл.
Это означает, что в программе систематическая проблема, при которой входной файл может её повесить. А исправляются, по-видимому, только конкретные случаи.
Не знаю. что тут можно сделать. Лучше всего -- выяснить, в чём корень проблемы. Но если это невозможно... сделать отдельный поток с watchdog-таймером?..