【发布时间】:2013-12-10 03:39:55
【问题描述】:
我想实现一个具有以下逻辑的方法:
mymethod(exceptionT as Type)
throw new exception of type exceptionT
在 asp.net 4 (vb.net) 中,我这样写:
Public Shared Function raiseMyException(ByVal extype As Type) As Boolean
Dim constructor = extype.GetConstructor(New Type() {Type.GetType("String")})
Dim ex = constructor.Invoke(New String() {"Exception raised"})
'Throw ex
但这失败了:throw 应该派生自 System.exception
如何通过反射抛出自定义类型的异常?
【问题讨论】:
-
您的自定义类型必须从 Exception 继承,否则 throw 毫无头绪。对您在这里尝试实现的目标感到有些困惑
-
所有异常都继承自
Exception,那么您使用反射是否有特定原因?使用您的代码,可以使用作为参数传递的任何类型,因为您不限制实际需要的类型。 -
很抱歉让您感到困惑。我正在为一些非常古老的图书馆做一个包装器。有很多方法实际上是相同的:调用原始方法,如果返回 1 则返回 true,或者如果给出错误描述则引发异常。因此,我想创建一个基本方法,该方法接受输入原始方法的名称、所需的参数和要引发的异常类型(如果是这样的话)。
-
对不起。我现在真的很累。 Ric 的解决方案是可行的方法。
标签: asp.net vb.net exception reflection