如何创建一个检查异常的实用工具方法?

时间:2014-07-28 16:20:57

标签: java struts2 utilities

我必须使用以下代码

在我的struts 2应用程序操作类方法中设置private InputStream responseMsg
responseMsg = new ByteArrayInputStream(message.getBytes("UTF-8"));

在这种情况下,我必须处理UnsupportedEncodingException已检查的异常。如果我在所有方法中添加InputStream意味着代码看起来很混乱,我想在许多操作方法中分配throws UnsupportedEncodingException。所以我决定在Utility类中创建实用程序方法

public class Utilities {

    public InputStream responseMessage(String message) throws UnsupportedEncodingException {
        return new ByteArrayInputStream(message.getBytes("UTF-8"));
    }
}

从我的动作类

调用
responseMsg = new Utilities().responseMessage(message);

在这种情况下,还会在动作方法中处理UnsupportedEncodingException的编译时错误,帮助我为所有动作类方法创建Utility方法。

1 个答案:

答案 0 :(得分:1)

如果您具体谈论"UTF-8",建议的方法是抛出Error,如果某些必须按规范工作的东西没有。 E.g。

public InputStream responseMessage(String message) {
  try {
    return new ByteArrayInputStream(message.getBytes("UTF-8"));
  } catch(UnsupportedEncodingException ex) {
    throw new AssertionError("Every JVM must support UTF-8", ex);
  }
}

由于Java 7 live对于这种特定情况更容易:

public InputStream responseMessage(String message) {
  return new ByteArrayInputStream(message.getBytes(StandardCharsets.UTF_8));
}

如果涉及任意字符集,则应该处理可能的异常,这不是什么大问题,因为使用返回的InputStream的代码无论如何都必须处理声明的IOException和{ {1}}是UnsupportedEncodingException的子类。因此,IOException所需的catchthrows条款将涵盖IOException