2012-04-25 3 views
2

Я родом из мира C, и мы использовали «определение», чтобы определить различные возвращаемые значения, значения, возвращаемые из функций C, например, так:Правильные значения возвращаемого значения в Java API?

#define RETURN_SUCCESS 0 
#define RETURN_ERROR -1 

int myFunc() 
{ 
    if(...) return(RETURN_SUCCESS); 
    else if(...) return(RETURN_ERROR);    
} 

Как это делается в Java, правильный путь?

Пусть у меня есть:

public MyObject findMyObject() 
{ 
    MyObject tempObject = search(); 

    if(tempObject.type == myType) 
    { 
     return tempObject; 
    } 
    else 
    { 
     return null; 
    } 
} 

Это нормально, чтобы вернуться null?

Есть ли более правильный способ сделать это?

ответ

5

Это нормально, чтобы вернуть null. Вы заметите в Java API это returns null sometimesor -1 where an Int is expected. Другой вариант, который часто используется, - это просто throw an exception, если что-то пойдет не так.

Вопрос, который имеет тенденцию получать большинство людей, и тот, который вы, вероятно, задаете себе сейчас, это «Ну, когда я делаю исключение и когда я просто возвращаю null?» на этот вопрос ответ довольно хорошо here.

4

Использование кода возврата для указания ошибок в Java является анти-шаблоном. Вместо этого вы должны использовать исключения.

Если ошибка вызвана ошибкой программирования (недопустимые параметры, неправильное состояние), вызовите экземпляр неконтролируемого исключения.

Когда ошибка вызвана тем, что что-то пошло не так в среде (не удается подключиться к серверу, не удается найти требуемый файл), выкиньте проверенное исключение.

1

Всегда в порядке возвращать то, что соответствует спецификациям, которые вы определяете. Следовательно, если вы укажете в документации (javadoc и tests), какие ситуации могут привести к возврату null, вы можете вернуть ее без дальнейших церемоний.

Вы также должны понимать, что быть заложником кодов ошибок (например, вашего кода на C) является не лучшей тактикой на Java. Некоторые даже считают, что это антипаттерн. Чаще всего используются исключения. Учитывая, что вы новичок в Java, рассмотрите возможность изучения учебника по адресу http://docs.oracle.com/javase/tutorial/essential/exceptions/ для получения дополнительной информации.

Смежные вопросы