异常抛出不合适,返回null更合适。一般情况下出现如下三种情形才须抛出异常: 编程错误;客户端代码错误;资源失败。 public AcsNode getAcsNodeByCode_NodeTypeCode(String nodeTypeCode, String code) throws NoSuchRecordException { AcsNode node = getUniqueEntityByPropNames(new String[]{"nodeTypeCode", "code"}, new Object[] { nodeTypeCode, code }); if (node == null) { throw new NoSuchRecordException("No such node exist. code = " + code + ", nodeTypeCode = " + nodeTypeCode); } return node; } capability对象太大,如果缓存中数据个数很多的话,可能会导致OutOfMemoryError,避免此错误的方式有几种:设置缓冲区大小、使用SoftReference。 private Map<String, Capability> capabilityMap = new HashMap<String, Capability>();