其他分享
首页 > 其他分享> > 我如何创建一个新的异常类并将其抛出

我如何创建一个新的异常类并将其抛出

作者:互联网

在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;

标签:reflection-emit,exception,runtime,c,net
来源: https://codeday.me/bug/20191122/2058016.html