Java中的“goto”替代品

时间:2013-11-07 04:45:24

标签: java c++ error-handling coding-style

在Visual C ++代码中,我曾经写过一些宏来检查函数的返回值是否不合预期,转到Exit标签。像这样:

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

这是为了防止程序崩溃并始终处理异常。我的问题是,在Java中,我们建议使用这样的代码样式,还是应该在大多数情况下使用try / catch?

谢谢

1 个答案:

答案 0 :(得分: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);
}