2013-11-07 4 views
0

В Visual C++ код, я использовал для написания некоторых макросов, чтобы проверить, не возвращается ли возвращаемое значение функции, перейдите на метку Exit. Что-то вроде этого:Альтернатива «goto» в Java

HRESULT hr = S_OK; 
IF_FALIED_EXIT(boo()); 
... 
Exit: 
    if(FAILED(hr)){ print error message } 
    return hr; 

Это необходимо для предотвращения сбоя программы и может всегда обрабатывать исключения. Мой вопрос в том, что в Java мы рекомендуем использовать стиль кода, подобный этому, или мы должны использовать try/catch для большинства случаев?

Спасибо

+6

Никто не рекомендует 'goto' когда-либо. Если вы хотите обрабатывать исключения в Java, используйте блок try/catch. – John3136

+0

Не было шаблона обработки ошибок GOTO в C++, который я видел, который не может быть реплицирован с помощью try/catch/finally в java. – AdamSpurgin

+3

C++ не нуждается в обходном пути macro и goto. Он имеет RAII. Используйте это. – chris

ответ

1

Это определенно не рекомендуется в Java. См. Features Removed From C and C++.

В Java есть некоторые вещи, которые вы можете сделать, которые похожи, например, см следующий простой пример, который использует меченый перерыв для раннего побега:

// a Class is handed in to create a new instance of with basic reflection 

construct_and_add: if (clazz != null) { 

    try { 
     Object obj = clazz.newInstance(); 

    } catch (Exception e) { 
     System.err.println("Error <" + e.getClass().getName() 
      + "> in reflective instantiation: " + e.getMessage()); 

     break construct_and_add; 
    } 

    somewhereElse.add(obj); 
} 
Смежные вопросы