c# - 我怎样才能创建一个新的异常类并抛出它

标签 c# .net exception runtime reflection.emit

在 C#.NET 中,我如何创建一个新的异常类并在运行时抛出它。 我需要在运行时根据我收到的输入字符串生成异常类名。看来我应该使用 Reflection.emit,但我不知道该怎么做。

最佳答案

虽然我不明白使用反射发射创建异常类型的目的,但创建异常类型与创建任何其他类型没有什么不同:

// Build an assembly ...
var appDomain = Thread.GetDomain();
var assemblyName = new AssemblyName("MyAssembly");
var assemblyBuilder = appDomain.DefineDynamicAssembly(
  assemblyName,
  AssemblyBuilderAccess.Run
);

// ... with a module ...
var moduleBuilder = assemblyBuilder.DefineDynamicModule("MyModule");

// ... containing a class.
var typeBuilder = moduleBuilder.DefineType(
  "MyException",
  TypeAttributes.Class,     // A class ...
  typeof(Exception)         // ... deriving from Exception
);
var exceptionType = typeBuilder.CreateType();

// Create and throw exception.
var exception = (Exception) Activator.CreateInstance(exceptionType);
throw exception;

关于c# - 我怎样才能创建一个新的异常类并抛出它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21252531/

相关文章:

没有明显原因的python boto3连接错误

c++ - 异常表达式创建的异常对象的类型

exception - Yii完整性约束异常处理和用户友好消息

c# - 正确反序列化分层 XML

c# - Encoding.GetEncoding(437).GetString() 错误?

.net - 在托管 C++ 中检测 Debug模式

c# - Windows Phone 中部分图像源与额外文本绑定(bind)

c# - 日期时间转换在不同计算机上失败/成功

c# - SSO 更好的方法来迎合 Windows 集成身份验证以及不在域中的用户

c# - 如何在 ASP.NET 中重写我的 URL?