使用 mod_cgi 和 mod_perl 捕获错误

2024-01-07

提前感谢大家。

我一直在对错误处理进行一些研究,但我觉得我并没有对我应该做什么有充分的了解。

前言:我的代码位于 Apache 中并在浏览器中执行,我的目标不包括命令行执行。

我希望具有 CGI::Carp (fatalsToBrowser) 的行为,能够捕获输出并能够将其放入我自己的模板页面中,通过电子邮件发送等...我确实注意到 fatalsToBrowser 不起作用与 mod_perl。有谁知道为什么? Apache/mod_perl 是如何阻碍的?


第一个目标:我想将一些东西放在一起,以便在使用 mod_perl 或 mod_cgi 执行代码时可以正常工作。

第二个目标:我希望有一个高级方法来捕获类似于.NET 的 Application_Error (在 global.asax 中)和 PHP 的 set_exception_handler() 和 set_error_handler() 方法的所有错误。这些允许您在引发错误时进行控制,而无需将代码包装在混乱的 /gross try-catch 语句中。


我读过/评论过的东西:

1.) Perl 中的 OO 异常处理 http://www.perl.com/pub/a/2002/11/14/exception.html,但不是我要找的。我想捕捉的大多数东西都是 die()ing。下一个链接还指出这篇文章已过时且已弃用。

2.) Perl:$SIG{__DIE__}、eval { } 和堆栈跟踪 https://stackoverflow.com/questions/971273/perl-sigdie-eval-and-stack-trace,但我并没有从中得到太多与我的目标相关的东西。

3.) Perl 实用模式 (O'Reilly),第 21 章“错误处理和调试”。值得庆幸的是,我所有的 Perl 代码都使用严格的并且启用了警告,并且第 6 章“用 mod_perl 进行编码”中提到的最重要的事情已经完成。

4.) 我翻遍了《Learning Perl》、《Perl Cookbook》、《Programming Perl》和《Higher Order Perl》的目录,但没有看到任何让我印象深刻的内容。如果您认为我错过了某些内容,请告诉我。 :)


我不记得在哪里(也许在“实用 mod_perl”中,但我读到你不应该弄乱 $SIG{__DIE__}。


你读过吗mod_perl网站已上线替代异常处理技术 http://perl.apache.org/docs/general/perl_reference/perl_reference.html#Alternative_Exception_Handling_Techniques?它讨论了如何通过使用覆盖全局来捕获未捕获的异常die()函数而不是使用$SIG{__DIE__}。一种更干净的方法,但并不完美。

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

使用 mod_cgi 和 mod_perl 捕获错误 的相关文章

随机推荐

  • GitHub - 按作者列出提交

    有什么办法可以上GitHub http github com 在浏览器中列出单个作者所做的所有提交 都不是本地的 例如通过git log 也不通过 API 单击提交列表 提交历史记录 中的用户名只会进入该用户的个人资料页面 检查 GitHu
  • 使用 HashMap 作为表单支持 Bean Spring MVC + ThymeLeaf

    我是 Spring MVC 的新手 来自 Grails 是否可以使用 HashMap 作为表单支持 bean 在 Grails 中 人们可以从任何控制器操作访问名为 params 的对象 Params 只是一个映射 其中包含 POST 数据
  • 使用 VkSubpassDependency 与信号量?

    我正在关注这个 vulkan 教程 https vulkan tutorial com Drawing a triangle Drawing Rendering and presentation https vulkan tutorial
  • 如何从ubuntu中彻底删除cuda?

    我有ubuntu 18 04 并且意外安装了cuda 9 1来运行Tensorflow gpu 但似乎tensorflow gpu需要cuda 10 0 所以我想先通过执行删除cuda martin nlp server sudo apt
  • GIT:“被我们删除”的冲突有多危险?

    几天前 我在 master 的基础上创建了一个名为 new branch 的新分支 当我使用文件 file php 处理 new branch 时 他分支上的第二个开发人员删除了文件 file php 并将他的分支与 master 合并 现
  • Neo4j Python py2neo授权错误

    在 Windows 8 1 上安装 Neo4j 2 2 3 没什么特别的 通过 Neo4j 启动应用程序启动服务器 没什么特别的 开始使用 py2neo 如 Neo4j org 上的文档所示 遇到了我无法解释的授权错误 日志如下 特别说明
  • 使用 php/mysql 通过 IP 禁止

    我希望能够通过 IP 禁止用户 我的想法是在 BannedIPs 表中保留 IP 列表作为行 IP 列将是索引 为了根据表检查用户的 IP 我将为每个会话保留一个名为 SESSION IP 的会话变量 如果在任何请求中 SESSION IP
  • Python csv writer 是否始终使用 DOS 行尾字符?

    我意识到csvPython 中的库总是生成 DOS 行尾字符 即使我使用 wb 模式 即使我使用Linux import csv f open output txt wb writer csv writer f writer writero
  • 如何复制 YouTube 的应用导航逻辑

    我想在我的应用程序中实现导航逻辑 就像在 Youtube 应用程序中一样 BottomNavigationView Fragment 管理 我想要这个 因为这些片段很重 所以我希望它们被延迟初始化然后存储在backstack中 我觉得You
  • 使 DIV 最大高度等于“窗口高度 - 100px”

    有一个方法可以设置max height in 但是这里有什么方法可以设置 DIV max height 这样它就会比仅使用 CSS 的窗口高度小 100px 吗 它不能是固定布局 用户必须能够垂直滚动页面 但 DIV 始终应调整大小wind
  • Delphi XE6 - 如何使用户定义的组件图像显示在调色板上

    我正在从 2007 迁移到 XE6 并且有几个由我自己和第三方编写的用户定义组件 在delphi 2007中安装组件时 您只需将组件添加到库中 它就会自动找到同名的DCR并将其加载到dpk文件中 并将图像加载到调色板上 在delphi XE
  • 如何限制pytorch中的参数范围?

    所以通常在pytorch中 模型中的参数没有严格的限制 但是如果我希望它们保持在 0 1 范围内怎么办 有没有办法阻止参数更新超出该范围 一些生成对抗网络 其中一些要求判别器的参数在一定范围内 中使用的一个技巧是在每次梯度更新后限制值 例如
  • HTML 中的“href”值可在 Android 上的 YouTube 应用或市场 (Google Play) 中打开视频

    我正在制作一个显示 360 度视频的网页 但我最近注意到 Android 浏览器中不支持 360 度功能 因此视频无法正确显示 所以经过大量搜索后我发现最好的选择是尝试使用本开发人员教程中解释的 Android Intent 在 YouTu
  • 如何在 Python 中迭代坐标列表并计算它们之间的距离

    我有一个包含 20 个坐标 x 和 y 坐标 的列表 我可以计算任意两个坐标之间的距离 但我很难编写一个算法来迭代列表并计算第一个节点与每个其他节点之间的距离 例如 ListOfCoordinates 1 2 3 4 5 6 7 8 9 1
  • 如何在 tcl 中使用 split 删除不需要的字符

    这是一个例子 Interface IP Address OK Method Status Protocol FastEthernet0 0 unassigned YES unset administratively down down Fa
  • 此类不符合键的键值编码

    我对快速开发非常陌生 我正在努力本节 https developer apple com library ios referencelibrary GettingStarted DevelopiOSAppsSwift Lesson7 htm
  • MacOS:以编程方式向图像添加一些文本?

    我正在将一些代码从 Linux 转换到 Mac 如何以编程方式用文本覆盖图像 类似于 ImageMagick 转换命令 由于各种原因 我不能依赖安装 ImageMagick convert draw text 50 800 hello wo
  • 我们可以迭代 Amazon S3 中的完整对象集吗

    我尝试打印 S3 存储桶中所有对象的元数据 但是 它不会返回超过 1000 个对象的结果 我尝试过实施objectListing isTruncated 但这没有帮助 下面是我列出 1000 多个对象的示例代码 ListObjectsReq
  • Hask 局部很小吗?

    haskell 对象的类别 Hask 是局部小类别的示例吗 http ncatlab org nlab show locally small category http ncatlab org nlab show locally small
  • 使用 mod_cgi 和 mod_perl 捕获错误

    提前感谢大家 我一直在对错误处理进行一些研究 但我觉得我并没有对我应该做什么有充分的了解 前言 我的代码位于 Apache 中并在浏览器中执行 我的目标不包括命令行执行 我希望具有 CGI Carp fatalsToBrowser 的行为