无法捕获的 ChuckNorrisException

2024-01-12

是否可以构造一段代码Java http://en.wikipedia.org/wiki/Java_%28programming_language%29这将产生一个假设java.lang.ChuckNorrisException无法捕捉?

想到的想法是使用例如拦截器或面向方面的编程 http://en.wikipedia.org/wiki/Aspect-oriented_programming.


我没有尝试过,所以我不知道是否可以JVM http://en.wikipedia.org/wiki/Java_virtual_machine会限制这样的事情,但也许你可以编译抛出异常的代码ChuckNorrisException,但在运行时提供一个类定义ChuckNorrisException which 不扩展 Throwable.

UPDATE:

这不起作用。它会生成一个验证器错误:

Exception in thread "main" java.lang.VerifyError: (class: TestThrow, method: ma\
in signature: ([Ljava/lang/String;)V) Can only throw Throwable objects
Could not find the main class: TestThrow.  Program will exit.

更新2:

实际上,如果禁用字节码验证器,您就可以让它工作! (-Xverify:none)

更新3:

对于那些在家中关注的人,以下是完整的脚本:

创建以下类:

public class ChuckNorrisException
    extends RuntimeException // <- Comment out this line on second compilation
{
    public ChuckNorrisException() { }
}

public class TestVillain {
    public static void main(String[] args) {
        try {
            throw new ChuckNorrisException();
        }
        catch(Throwable t) {
            System.out.println("Gotcha!");
        }
        finally {
            System.out.println("The end.");
        }
    }
}

编译类:

javac -cp . TestVillain.java ChuckNorrisException.java

Run:

java -cp . TestVillain
Gotcha!
The end.

注释掉“extends RuntimeException”并重新编译ChuckNorrisException.java only :

javac -cp . ChuckNorrisException.java

Run:

java -cp . TestVillain
Exception in thread "main" java.lang.VerifyError: (class: TestVillain, method: main signature: ([Ljava/lang/String;)V) Can only throw Throwable objects
Could not find the main class: TestVillain.  Program will exit.

不验证运行:

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

无法捕获的 ChuckNorrisException 的相关文章

随机推荐

  • 使用字符串输入和输出运行进程

    这里有很多与 fork 和 exec 相关的问题 不过 我还没有找到真正使使用它们的过程变得简单的方法 而让程序员的生活变得简单就是目标 我需要一个 C Linux 友好的函数来执行以下操作 string RunCommand string
  • 如何给函数起别名?

    我正在尝试为 R 中的函数创建别名 例如 要获取 R 中向量的长度 length the vector returns the length of the vector 我想创建一个名为 len 的函数的别名 len the vector
  • 使用 Serde 反序列化具有多种类型字段的 JSON

    我有一些 JSON 文本数据 其字段可以是字符串或字符串数 组 以下是四个可能的示例 keya some string keyb some string keya some string keyb some string some stri
  • 比较 SPARQL 图

    如何使用 SPARQL 比较两个 RDF 图 如果我有图表 a 和 b 我想找到 a 出现在 b 中的所有时间 我可以查询 a 的所有主语 谓词和宾语 然后以编程方式构建一个与 b 中的 a 模式匹配的模式查询 有没有一种方法可以在 SPA
  • xcode 命令行测试,参数在启动时传递

    我在 CI 上实施 xcodebuild 命令测试时遇到了小问题 我有与特定设备语言相关的测试 在 xcode 中我可以将 启动时传递的参数 设置为 AppleLanguages 语言 我可以使用 xcodebuild 传递该参数吗 我的脚
  • 如何用C++封装视频文件的H.264码流

    我正在尝试转换视频文件 mp4 到 Dicom 文件 我通过在 Dicom 中存储单个图像 视频的每帧一个图像 成功地做到了这一点 但结果是文件太大 这对我来说不好 相反 我想将存储在视频文件中的 H 264 比特流封装到 Dicom 文件
  • 将方法的名称作为参数传递

    private void Method1 Do something Log Something Method1 private void Method2 Do something Log Something Method2 private
  • 我什么时候应该使用 ConcurrentDictionary 和 Dictionary?

    我总是很困惑该选择哪一个 据我所知 我使用Dictionary over List如果我想要两种数据类型Key and Value所以我可以很容易地找到一个值key但我总是很困惑是否应该使用ConcurrentDictionary or D
  • 如何在 php curl 中设置 PHP_AUTH_PW

    如何在phpcurl中设置PHP AUTH PW和PHP AUTH USER参数 在服务器端检查 if isset SERVER PHP AUTH PW 打印 授权错误 任何帮助 将不胜感激 Thanks 它称为 basic auth 适用
  • 命令链的别名

    我有一个tool使用命令 step1 step2 and step3 我可以通过调用以下方式链接它们 tool step1 step2 step3 我想要一个名为all通过调用以下命令来运行所有步骤 tool all 我找到了一个可行的解决
  • 您正在导入需要 useState 的组件。它仅适用于客户端组件,但其父组件均未标记为“使用客户端”

    下面的简单组件在 Next js 中抛出以下错误app我使用时的目录useState 您正在导入需要 useState 的组件 它仅在客户端组件中工作 但其父组件都没有标记为 使用客户端 因此默认情况下它们是服务器组件 import use
  • 步骤内的 Specflow 调用步骤会导致“无匹配的步骤定义”错误

    我正在遵循概述的技术here https stackoverflow com questions 24928270 is it valid to have specflow features depending on other featu
  • WELD-001303 范围类型 javax.enterprise.context.SessionScoped 没有活动上下文

    我已经搜索了所有地方 但似乎我找不到解决此错误的最佳答案 有我的堆栈跟踪 有人可以告诉我发生了什么事吗 我花了两个日期才找到此错误 16 55 02 405 SEVERE org activiti engine impl jobexecut
  • HTML 在多个无序列表之间拖放

    我有一个相对简单的网络应用程序 我将其创建为书架 我希望用户能够在书架之间拖放书籍 当我将一本书放到一个书架中现有书籍的 右侧 时 它的工作方式完全符合我的要求 已拖放的书将添加到书架中 当我将一本书放在现有的书上时 它不起作用 当我这样做
  • Ktor 中的 URL 生成器示例

    我正在使用 Ktor 客户端调用 API 但没有找到任何有关如何使用查询参数构造 URL 的示例 我想要这样的东西 protocol HTTPS host api server com path get items queryParams
  • AngularJS 访问指令模板内的 DOM 元素

    是否有一种更 有角度 的方式在指令模板中选择 DOM 元素 例如 假设您有以下指令 app directive myDirective function return template div ul li li ul div link fu
  • C# 将字符串解析为 int32 - 值太大

    我从外部接口收到一个字符串 其中包含INT32价值 该值表示 100 一个有符号整数 因此看起来像这个字符串 4294967196 如果它看起来像 100 我可以使用Int32 TryParse 将其转换为有符号值 但就我而言 它按原样解释
  • Android 联系人提供程序:如何设置主要电话号码

    添加或更新联系人以构建自定义联系人提供程序时 如何将联系人的电话号码设置为主要号码 添加和更新联系人工作正常 但我不知道如何将联系人的一个号码设置为主要号码或默认号码 mValues put Phone IS PRIMARY 1 mValu
  • gvim 中的错误 - 到哪里报告? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我最近在 LaTeX 的 gvim 即 vim 的 gui 语法突出显示中遇到了一个错误 它可以在多个平台上重现 debian ubuntu 中的 v
  • 无法捕获的 ChuckNorrisException

    是否可以构造一段代码Java http en wikipedia org wiki Java 28programming language 29这将产生一个假设java lang ChuckNorrisException无法捕捉 想到的想法