我正在C#中创建扩展方法以从datagridview中检索某个值。 这里如果用户给出的列名不存在,那么我想让这个函数抛出一个异常,这个异常可以在这个函数被调用的地方处理。 我怎样才能做到这一点。如何为自定义控件或扩展方法创建自定义异常处理程序
public static T Value<T>(this DataGridView dgv, int RowNo, string ColName)
{
if (!dgv.Columns.Contains(ColName))
throw new ArgumentException("Column Name " + ColName + " doesnot exists in DataGridView.");
return (T)Convert.ChangeType(dgv.Rows[RowNo].Cells[ColName].Value, typeof(T));
}
@Zach:你明白我的意思。但我在这里有点困惑。假设我为此创建了一个程序集,然后将其包含到其他项目中。我不使用任何异常处理程序,然后发生异常的地方?我的意思是在我的dll或用户代码中。我感觉好像我的dll会挂在那一点上。而使用dll的用户会陷入困境,他的所有应用程序将会异常关闭。是这样吗 ? – 2010-04-24 07:07:35
@Shantanu:只要你让你的自定义异常类为public,你的其他项目将能够捕获你抛出的自定义异常。如果没有,另一个项目会崩溃(除非它捕获所有'Exception's,但这样做被认为是不好的做法)。 – 2010-04-24 07:16:34