向异常添加数据
Adding data to an exception
我有一个要处理项目列表的用例。处理不是原子的,它可能对列表中的某些项目成功而对其他一些项目失败。我想告知 API 的用户,对于列表中的某些项目,处理失败。我有 3 个选项:
Return 包含成功项目的列表
Return 包含失败项目的列表
抛出异常说明某些项目失败
如果我采用第 3 种方法并且仍然想让客户知道处理失败的项目,我可以向异常添加一个列表 class 并让客户在他们需要时阅读此列表得到一个例外?这是可取的吗?这里还有什么可以做的吗?
异常 class 如下所示:
@Getter @Setter
public class SomeProcessingException extends Exception {
private static final long serialVersionUID = 1L;
private List<SomeItem> failedItems;
public SomeProcessingException(String message) {
super(message);
}
}
是的,您可以扩展 Exception
并添加失败项的 List
,就像您已经做的那样。
部分:
still want to let the clients know the items for which the processing failed
您的客户是什么?最终用户?还是使用您的库的程序员?管理员?
如果是程序员,他可以抓住你的 SomeProcessingException
并从中获取失败项目列表。
如果查看日志的是最终用户(例如管理员),则必须重写 SomeProcessingException
的 toString
方法。
如果它是使用客户端(浏览器、android phone、桌面应用程序...)的最终用户,您必须拦截 SomeProcessingException
并显示弹出窗口或类似内容从中提取失败的项目。
许多标准异常提供对其内部属性的访问,这些属性可由 class 的用户使用,例如 URISyntaxException
has the method getIndex()
到:
Returns an index into the input string of the position at which the parse error occurred, or -1 if this position is not known.
与SQLException
has the method getErrorCode
类似:
Retrieves the vendor-specific exception code for this SQLException object.
我有一个要处理项目列表的用例。处理不是原子的,它可能对列表中的某些项目成功而对其他一些项目失败。我想告知 API 的用户,对于列表中的某些项目,处理失败。我有 3 个选项:
Return 包含成功项目的列表
Return 包含失败项目的列表
抛出异常说明某些项目失败
如果我采用第 3 种方法并且仍然想让客户知道处理失败的项目,我可以向异常添加一个列表 class 并让客户在他们需要时阅读此列表得到一个例外?这是可取的吗?这里还有什么可以做的吗?
异常 class 如下所示:
@Getter @Setter
public class SomeProcessingException extends Exception {
private static final long serialVersionUID = 1L;
private List<SomeItem> failedItems;
public SomeProcessingException(String message) {
super(message);
}
}
是的,您可以扩展 Exception
并添加失败项的 List
,就像您已经做的那样。
部分:
still want to let the clients know the items for which the processing failed
您的客户是什么?最终用户?还是使用您的库的程序员?管理员?
如果是程序员,他可以抓住你的 SomeProcessingException
并从中获取失败项目列表。
如果查看日志的是最终用户(例如管理员),则必须重写 SomeProcessingException
的 toString
方法。
如果它是使用客户端(浏览器、android phone、桌面应用程序...)的最终用户,您必须拦截 SomeProcessingException
并显示弹出窗口或类似内容从中提取失败的项目。
许多标准异常提供对其内部属性的访问,这些属性可由 class 的用户使用,例如 URISyntaxException
has the method getIndex()
到:
Returns an index into the input string of the position at which the parse error occurred, or -1 if this position is not known.
与SQLException
has the method getErrorCode
类似:
Retrieves the vendor-specific exception code for this SQLException object.