我必须使用以下代码
在我的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方法。
答案 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
所需的catch
或throws
条款将涵盖IOException
。