Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建一个新的异常类并抛出它_C#_.net_Exception_Runtime_Reflection.emit - Fatal编程技术网

C# 如何创建一个新的异常类并抛出它

C# 如何创建一个新的异常类并抛出它,c#,.net,exception,runtime,reflection.emit,C#,.net,Exception,Runtime,Reflection.emit,在C#.NET中,如何创建新的异常类并在运行时抛出它。 我需要在运行时根据作为输入接收的字符串生成异常类名。似乎我应该使用Reflection.emit,但我不知道如何使用。我想您可以查看本文中的例外情况: 这个线程在运行时解决了定义问题:虽然我不理解使用反射发射创建异常类型的目的,但创建异常类型与创建任何其他类型没有什么不同: // Build an assembly ... var appDomain = Thread.GetDomain(); var assemblyName = new

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

你需要给我们更多的背景。老实说,这听起来不是一个好主意-您想解决什么问题?如果您在运行时生成异常类型,您希望有人如何捕获它?除非他们捕获一个基本异常类型,否则,在这种情况下,您的异常类有什么用?@Lukazoid我同意它似乎有点“不可用”,但这个问题似乎是我感兴趣要解决的。@NowHewomustnotbenamed.:我不会这么说。我要说的是,在执行时基于字符串执行它是一种代码味道。。。但是声明自己的异常类型有很好的理由。我不需要捕获它,我需要它来进行测试(我想从封闭系统中获得一些东西)。它不会被用于真正的程序中(比如说用户)。否则,我意识到这是一个非常糟糕的做法。答案不应该只包含链接,它们应该包含自己需要的信息。