Я новичок в использовании C # и .NET, но я хочу попробовать играть красиво и повторно использовать системные компоненты.
В поддерживаемом мною коде есть несколько случаев, когда мы запускаем внешние инструменты и приложения, которые выглядят примерно так:
using (var Setup = Process.Start(SetupInfo) )
{
Setup.WaitForExit(SetupTimeout);
if (!Setup.HasExited )
throw new TimeoutException(
"Setup did not complete within the expected time");
}
Я пытаюсь добавить проверкукоды выхода также для тех внешних инструментов, которые имеют четко определенные коды выхода, то есть что-то вроде этого в блоке «using»:
switch ( Setup.ExitCode )
{
case 0:
break;
case 1:
throw new SetupFailedException("Setup execution failed");
case 2:
throw new SetupFileNotFound("Setup did not find required files");
default:
throw new ExternalErrorException("Setup failed for some other reason");
}
... где первые два будут производными от общего исключения ExternalErrorException».Но есть ли какое-то существующее общее исключение, которое я мог бы повторно использовать для этого, то есть, чтобы сигнализировать о том, что внешний процесс не запустился, как ожидалось, вместо того, чтобы изобрести свой собственный?