Nei*_*l N 12 .net c# exception-handling exception
我有一个包装List <>的类
我有索引方法GetValue:
public RenderedImageInfo GetValue(int index)
{
list[index].LastRetrieved = DateTime.Now;
return list[index];
}
Run Code Online (Sandbox Code Playgroud)
如果用户请求的索引超出范围,则会抛出ArgumentOutOfRangeException.
我应该让这种情况发生或检查并扔掉我自己的吗?即
public RenderedImageInfo GetValue(int index)
{
if (index >= list.Count)
{
throw new ArgumentOutOfRangeException("index");
}
list[index].LastRetrieved = DateTime.Now;
return list[index];
}
Run Code Online (Sandbox Code Playgroud)
在第一个场景中,用户将从内部列表中获得异常,这会破坏用户不需要了解底层对象的OOP目标.
但在第二种情况下,我觉得好像在添加冗余代码.
编辑:
现在,我想到了,第三种情况,我捕获内部异常,修改它,并重新抛出它?
Ree*_*sey 12
你应该抛出自己的,原因有两个:
至于捕获和修改内部异常 - 我不会推荐这个,必然.如果异常是额外信息可能有用的异常,则应使用新异常的InnerException来传播此信息.
在此示例(ArgumentOutOfRangeException)中,存在内部列表的事实应保留为实现细节,并且您的用户没有理由看到该信息.
归档时间: |
|
查看次数: |
6164 次 |
最近记录: |