if-else предназначен для кодирования логики приложения, а не для обработки нестандартных ситуаций. если твой код ожидает успешного ответа от сервера, и только в случае успешного ответа продолжит штатную работу, а иначе обработка должна прерваться - налицо исключительная ситуация. допустим есть пять методов Operation1(), Operation2(), ..., Operation5(). логика работы приложения требует чтобы эти методы отработали последовательно, если все методы сработали успешно вернуть ResultCode.Success, иначе - ResultCode.Fail вот два примера в стиле "if(var) {} рулит!": PHP: var result = Operation1(); if (!result) return ResultCode.Fail; result = Operation2(); if (!result) return ResultCode.Fail; result = Operation3(); if (!result) return ResultCode.Fail; result = Operation4(); if (!result) return ResultCode.Fail; result = Operation5(); if (!result) return ResultCode.Fail; return ResultCode.Success; PHP: var result = Operation1(); if (result) { result = Operation2(); if (result) { result = Operation3(); if (result) { result = Operation4(); if (result) { result = Operation5(); if (result) return ResultCode.Success; } } } } return ResultCode.Fail; а вот вариант с применением исключений: PHP: try { Operation1(); Operation2(); Operation3(); Operation4(); Operation5(); } catch (CustomException e) { return ResultCode.Fail; } return ResultCode.Success; что называется - почувствуйте разницу. дополнительным плюсом в последнем варианте является то, что ты можешь гибко настраивать классы исключений и возвращать любые дополнительные данные в объектах исключений. это я еще не осветил проблему когда при возникновении ошибки нужно сделать return из нескольких методов подряд.