如果发生检查异常,返回什么?

时间:2013-12-18 11:20:46

标签: java exception

我想知道应该返回什么,当我的例子中出现一些异常时

public MyClass createComponent(){
  String className = "foo.MyClass";
  try {
    final Class<? extends MyClass> clazz = Class.forName(className).asSubclass(MyClass.class);
    return clazz.getDeclaredConstructor(List.class, String.class).newInstance(list, name);
  } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
    e.printStackTrace();
  }
// return null; //??  
}

1 个答案:

答案 0 :(得分:4)

根据您的API的逻辑和根异常的相似性,您可以

  • return null
  • 重新抛出异常
  • 让它通过(即声明并且不要抓住)
  • 抛出新的异常,嵌入原因

如果异常非常特殊(它们不应该出现),如您的代码所示,您可能应该抛出运行时异常或InternalError,指出库中存在内部错误。在这里返回null没有任何好处,可能会隐藏一个错误。