// Net core 3.1 Console application
class Program
{
public static void Main()
{
Environment.ExitCode = 1;
throw new Exception("boom");
}
}
Приведенный выше код приводит к коду выхода 0
!
Я ожидал, что это будет 1
.
https://docs.microsoft.com/en-us/dotnet/api/system.environment.exitcode?view=netcore-3.1 говорит "Получает или устанавливает код завершения процесса. " Кроме того, «Если метод Main возвращает void, вы можете использовать это свойство для установки кода выхода, который будет возвращен вызывающей среде».
Если я удаляю исключение, код выхода будет 1
как и ожидалось.
Я думал, что самой целью Environment.ExitCode
было указать код выхода, который будет использоваться, если программа не достигнет точки, в которой он установлен иначе.
Как мне сделать уверен, что код выхода не равен нулю. в то время как все еще не нужно ловить все исключения? Я хочу, чтобы исключение на самом деле генерировалось вместе с ненулевым кодом выхода, потому что среда могла бы использовать его для отображения соответствующего сообщения об ошибке.
Действительно ли мне нужно выбирать между перехватом любого и всех исключений (вплоть до добавление обработчика для AppDomain.CurrentDomain.UnhandledException
) или возможность возврата кода выхода по моему выбору?