HttpClient - Легкая работа с HTTP(S) на C#

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by TheMMK, 4 Aug 2013.

  1. TheMMK

    TheMMK New Member

    Joined:
    6 May 2013
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    hooy

    hooy
     
    #1 TheMMK, 4 Aug 2013
    Last edited: 5 Aug 2013
  2. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    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 из нескольких методов подряд.
     
    1 person likes this.