我正在asp.net 4.5
网络应用中实施错误处理模块。
我创建了一个错误抛出GUI,它为特定(list<Types>
)程序集的Exception
个Exception
类型动态填充下拉选择器。
然后我想抛出选择的错误来测试如何捕获/处理它。
我有部分工作,因为我能够根据类型抛出异常,但我必须将其作为基本异常类型。实际的异常被“保留”为innerException
,但我想尝试抛出特定的异常。
所以我的问题是:如果只给出异常Type?
,我怎么能动态抛出异常 protected void ddlExcep_SelectedIndexChanged(object sender, EventArgs e)
{
List<Type> ExTypes = GetExceptionList(); //list of SystemException.Exception (from assembly System.SystemException)
DropDownList Exceptions = (DropDownList)sender;
string exc = Exceptions.SelectedValue.Replace("System.","");
Type ExcType = (from E in ExTypes where E.Name == exc select E).FirstOrDefault();
throw (SystemException)Activator.CreateInstance(ExcType);
}
没有必要说明我是如何得出列表的,但为了清楚起见 以下是显示List:
的代码public static T Instantiate<T>() where T : class
{
return System.Runtime.Serialization.FormatterServices.GetUninitializedObject(typeof(T)) as T;
}
public static List<Type> FindAllDerivedTypes<T>()
{
return FindAllDerivedTypes<T>(Assembly.GetAssembly(typeof(T)));
}
private List<Type> GetExceptionList()
{
List<Type> listExTypes = FindAllDerivedTypes<SystemException>();
return listExTypes;
}
答案 0 :(得分:0)
好的,这些评论让我回顾并意识到向SystemException
投射不是问题,而是我故意从我的页面中删除Page_Error
方法,从而导致代码继续运行到我添加了
System.Web.HttpUnhandledException
的下一行
private void Page_Error(object sender, EventArgs e)
{
//handle code
}
抛出/捕获了正确的异常