从 AppDomain.AssemblyLoad 事件引发异常

2024-03-08

有人可以向我解释为什么我似乎无法从 AppDomain.Assembly 加载事件内部抛出异常吗?例如:

class Program
{
    static Program()
    {
        AppDomain.CurrentDomain.UnhandledException += (s, a) =>
        {
            Console.WriteLine("Caught exception!");
        };

        AppDomain.CurrentDomain.AssemblyLoad += (s, a) =>
        {
            Console.WriteLine(string.Format("Assembly {0} loaded", a.LoadedAssembly.FullName));

            throw new Exception();

            Console.WriteLine("Should never get here...");
        };
    }

    static void Main(string[] args)
    {
        Console.WriteLine(new ClassLibrary1.Class1().TestString());
        Console.WriteLine();
        Console.WriteLine("Done...");
        Console.ReadLine();
    }
}

当我执行此操作时,输出如下:

Assembly ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null loaded
TestString
Done...

谁能向我解释这种行为?谢谢。

EDIT澄清一些事情:

  • 当我期望它运行时,程序集加载事件运行良好。但我的例外永远不会被抛出

  • 这是从一个更大的应用程序中提取的示例。我想在加载程序集后检查它,如果我不喜欢它的某些内容,我想快速失败......但我的异常没有“发生”


发生这种情况是由于 JIT 编译器的工作方式造成的。它需要先生成 Main() 方法的代码,然后才能开始运行。由于您引用的是 ClassLibrary1.Class1() 类型,因此它需要加载该程序集以检索类型信息。这需要它加载程序集before你的代码开始运行。像这样更改它以获得异常:

using System.Runtime.CompilerServices;
...
    static void Main(string[] args) {
        Test();
    }
    [MethodImpl(MethodImplOptions.NoInlining)]
    static void Test() {
        Console.WriteLine(new ClassLibrary1.Class1().TestString());
        Console.WriteLine();
        Console.WriteLine("Done...");
        Console.ReadLine();
    }

现在,静态构造函数可以先运行并在加载 ClassLibrary1 程序集之前注册 AssemblyLoad 事件处理程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 AppDomain.AssemblyLoad 事件引发异常 的相关文章

  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List
  • 当我使用 OpenSSL1.1.0g 根据固定的 p 和 g 值创建 Diffie Hellman 密钥协议密钥时,应该执行哪些检查?

    您好 我尝试通过这段代码使用修复 p 和 g 参数来制作 Diffie Hellman Keysanswer https stackoverflow com a 54538811 4706711 include

随机推荐

  • 切换到Android Studio 2.0后使用Dagger 2时出现NoClassDefFoundError

    在升级到 Android Studio 2 0 之前 我可以毫无问题地使用 Dagger 2 现在我得到了NoClassDefFoundError这让我停顿了一天多 我正在寻求帮助 看来 Gradle 不能我的AppModule类 尽管很明
  • 静态成员实例引用问题[重复]

    这个问题在这里已经有答案了 我在 Analytics 类中保存了以下静态方法 public static void buttonHit string eventName string eventAction string descripti
  • 使用 jquery 的 .validate 函数提交表单

    这是一个简单的问题 我有一个正在使用 jquery 的 validate 函数进行验证的表单 问题是 只有当我使用以下方式提交表单时 验证似乎才起作用
  • 如何在启动后将调试器附加到 iOS 应用程序?

    我正在解决一个问题 该问题很少发生 并且当我在 Xcode 下运行东西时似乎不会发生 是否可以正常运行应用程序 即从 Springboard 直到出现我的问题 然后在此时附加调试器 如果可能的话 我更愿意在不越狱的情况下执行此操作 连接已连
  • 为加密数据创建订单列

    我正在将加密数据保存到数据库中 有没有一种方法可以创建纯文本数据的 哈希码 或指纹或校验和 如果我对 哈希码 进行排序 排序 则顺序将与我保存纯文本数据并执行相同同样的sort order by操作可以吗 我基本上需要一个 SOUNDEX
  • Rails:我应该如何在控制器之间共享逻辑?

    这个问题肯定有人问过 但我找不到 我有一个UsersController and an Admin UsersController 显然 这些类中发生了很多事情 例如 strong parameters 创建 编辑用户后要遵循的路径 是相同
  • Rails rspec 设置子域

    我正在使用 rSpec 来测试我的应用程序 在我的应用程序控制器中 我有一个像这样的方法 def set current account current account Account find by subdomain request s
  • adwords api:检索每日支出(费用)

    有人有一些示例代码来说明如何获取 AdWords 帐户的每日总支出 所有广告系列 吗 我无法找到以简单的方式执行此类操作的示例代码 因此任何帮助 指针 代码将不胜感激 我将使用 python 库 但任何其他语言也很酷 提前致谢 Hoff 我
  • 无法在 Xcode 中找到设备支持文件[重复]

    这个问题在这里已经有答案了 在我的设备中运行我的应用程序时 我在 Xcode 中遇到以下错误 Xcode 版本为 10 01 我的设备 iOS 版本为 12 2 iPhone 5S 无法找到设备支持文件 您需要将 Xcode 更新到最新版本
  • 模块“rxjs”没有导出成员“firstValueFrom”

    App service 文件如下所示 import Injectable from nestjs common import HttpService from nestjs axios import Observable firstValu
  • 使用失败、回溯 Prolog 查找列表的最小值

    我想使用导致回溯的失败来计算列表的最小值 我如何改变分钟 分钟 X 分钟 以使其工作 min X A B X is the min of A B min X X Y X lt Y min Y X Y Y lt X member X X me
  • 使用隐藏代码在 WPF 中缩放画布

    这里的场景是 我有一张画布 上面画着不同的图表 现在的要求是使用 C 或 VB 使用背后的代码放大画布 此外 我需要将缩放代码放置在某个 dll 中 以便我可以在我的应用程序中重复使用同一组代码 现在我的问题是如何做到这一点 我已经尝试过以
  • 如何在 bootstrap4 中添加自定义断点以及如何在 scss 中使用响应式断点混合

    我正在开发一个 Angular 5 应用程序 它需要是一个响应式应用程序 我面临着使其响应的问题1366X768 and 1920X1080字体大小不同的分辨率 问题一 我在 style scss 中覆盖了断点 如下所示 grid brea
  • 从 C 函数返回数组

    我编写了一个返回数组的函数 虽然我知道我应该返回一个动态分配的指针 但我仍然想知道当我返回在函数内部本地声明的数组 不将其声明为静态 时会发生什么 当我注意到函数中内部数组的内存没有被释放时 我感到很惊讶 并且我将数组返回到主函数 主要的
  • Linux Azure Web 应用上的 Puppeteer

    我正在尝试在 Linux Azure Web Apps 上运行 Puppeteer 但日志显示 node modules puppeteer local chromium linux 782078 chrome linux chrome 加
  • Rails:每个http请求都会创建一个新的连接池吗?

    我正在读这篇文章https polycrystal org posts 2012 05 25 active record connection pool fairness html https polycrystal org posts 2
  • <应用程序名称>.pch 文件使用情况

    pch文件的重要性是什么以及 ifdef的意义是什么OBJC 另外 我们在哪里定义像 ifdef IS Production 这样的参数 这些参数在 pch 文件中检查 pch 文件允许您避免导入 UIKit h 和 Foundation
  • 在 Swing 中显示动画 BG

    动画 循环 GIF 可以显示在JLabel或者在 HTML 中 在格式化文本组件中 例如JEditorPane 并被视为循环 但是要加载图像以绘制为容器的背景 我通常会使用ImageIO read or Toolkit getImage 后
  • 转义动态sqlite查询?

    我目前正在根据用户的输入构建 SQL 查询 可以在此处查看如何完成此操作的示例 def generate conditions table name nameValues sql u for field in nameValues sql
  • 从 AppDomain.AssemblyLoad 事件引发异常

    有人可以向我解释为什么我似乎无法从 AppDomain Assembly 加载事件内部抛出异常吗 例如 class Program static Program AppDomain CurrentDomain UnhandledExcept