catch (Exception Exc)
{
General.WriteLine(Exc.ToString());
return 0;
General.ServerRestart();
}
В вашем блоке catch вы возвращаете значение и затем выполняете дополнительные функции.
Когда вы пишете «return 0;», он не «устанавливает» возвращаемое значение равным 0, когда функция завершает работу, но возвращает значение 0 в результате выполнения функции и останавливает функцию в этой точке.
Поэтому, когда у вас есть оператор возврата, любой код впоследствии никогда не будет выполнен, потому что функция завершится до этого в операторе возврата.
Обратите внимание на этот сценарий:
// ... some code 1
if (someExpression)
{
// ... some code 2
return;
// ... some code 3
}
// ... some code 4
return;
// ... some code 5
Код1 всегда будет выполняться. Если someExpression имеет значение true - code2 будет выполняться (а другие не будут), в противном случае - код 4 будет выполнен (а другие не будут).
В любом случае code3 и code5 не будут выполняться, потому что в каждом из их перспективных путей кода они идут после оператора return.