2015-11-04 3 views
0

Рассмотрим следующий код snipett вызова:Как остановить выполнение называемого метода в Java и продолжить выполнение метода

public String testMethod1(int i, int j) 
{ 
//do something 
testmethod2(i,j); 
return "some string"; 
} 

public String testMethod2(int i, int j) 
{ 
//do something 
if(some condition) 
{ 
//Stop execution of this method 
//continue execution of previous method as if this method was never called 
} 
return "some string"; 
} 

Есть ли способ, что мы можем достичь чего-то, как выше в Java. Я хочу, чтобы второй метод прекратил его выполнение, и первый метод должен продолжаться, как если бы второй метод никогда не назывался

+1

худший путь 'общественного Струнный testmethod2 (INT I, Int J {попробуйте {INT I = 1/0;} наконец {вернуть что-то"}} ' – SpringLearner

+0

Возвращение нуль в m2 и проверить его в 1. Вы также можете генерировать исключение, но это не является хорошим выбором для управления. – Fildor

+0

Вы можете поместить «return» «in» if (some condition) {...} '. –

ответ

1

В вашем testMethod2 вы должны return остановить его выполнение. Тем не менее, просто return недостаточно, так как ваш метод возвращает String. Вы должны вернуть String или null.

Мое предложение состоит в том, чтобы вернуть пустую строку (""). Почему бы не вернуть null? Потому что вызывающий метод может захотеть что-то сделать с возвращаемой строкой. Если он равен нулю, будет выброшен NullPointerException, что не очень хорошо!

Таким образом, вы должны сделать это:

if (some condition) { 
    return ""; 
}