Java 是否引发新的运行时异常(“编译代码”)?

Java 是否引发新的运行时异常(“编译代码”)?,java,exception,jakarta-ee,Java,Exception,Jakarta Ee,我刚刚研究了javax.ws.rs.core.MediaType的代码,想知道抛出新的RuntimeException(“编译代码”),因为我以前从未见过这种情况。我认为是一种形式的“未实施”,但不知道 package javax.ws.rs.core; import java.util.Map; import javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate; public class MediaType { // some variabl

我刚刚研究了javax.ws.rs.core.MediaType的代码,想知道
抛出新的RuntimeException(“编译代码”)
,因为我以前从未见过这种情况。我认为是一种形式的“未实施”,但不知道

package javax.ws.rs.core;

import java.util.Map;
import javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate;

public class MediaType {

  // some variables and constants ...

  public static MediaType valueOf(String string) throws IllegalArgumentException {
    //compiled code
    throw new RuntimeException("Compiled Code");
  }

  public MediaType(String string, String string1, Map<String, String> map) {
    //compiled code
    throw new RuntimeException("Compiled Code");
  }

  public MediaType(String string, String string1) {
    //compiled code
    throw new RuntimeException("Compiled Code");
  }

  ...

}
包javax.ws.rs.core;
导入java.util.Map;
导入javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate;
公共类媒体类型{
//一些变量和常量。。。
公共静态MediaType值(字符串字符串)引发IllegalArgumentException{
//编译代码
抛出新的运行时异常(“编译代码”);
}
公共媒体类型(字符串、字符串1、映射){
//编译代码
抛出新的运行时异常(“编译代码”);
}
公共媒体类型(字符串、字符串1){
//编译代码
抛出新的运行时异常(“编译代码”);
}
...
}

这是关于什么的?

根据您发布的代码片段,我想您看到的是*.class文件,而不是*.java文件

如果是这样的话,“编译的代码”和//编译的代码就存在了,因为您的IDE试图为那些编译的*.java类提供一些可读的表示,所以您至少可以看看该类中有哪些可用的方法

“已编译代码”绝不是引发RunTimeException时给出的正确错误消息

*.class文件在每个IDE中的表示方式都不同(eclipse、intelliJ等)


如果您希望能够查看执行的代码,则需要未编译的*.java文件。

您基本上导航到一个java类文件,该文件没有附加任何源文件

您看到的是由NetBeans IDE表示的
MediaType.class
文件。它的输出基本上与调用
javap MediaType.class
所看到的相同。例外情况只是为了警告您。这不是文件的真实内容。您只能看到方法签名和公共字段,因为它是由.class文件公开的。其余的是省略的实现,因为没有源代码,您只能获得机器代码(您真的想深入研究它吗?很可能更喜欢阅读其他文档,或者在google上查找源代码)


JDK分为公共编程接口和私有编程接口。公共版本有很好的文档记录,并附带源代码。API的私有部分并不总是一样的。

要添加到其他答案中,可以使用反编译器查看.class文件内容(执行的指令)。一个很好的例子是Java反编译器,我在jar文件中有“相同”的代码。最近我正在处理这个jar文件,我不知道在哪里可以查看代码。在NetBeans中打开文件后,结果如下:

public class ConsolaEjecucion extends JFrame {

    private JPanel jContentPane;
    private JScrollPane jScrollPane;
    private JTextArea display;
    private JProgressBar barraProgreso;
    private JFrame frame;

    public ConsolaEjecucion(JFrame frame) {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    private JPanel getJContentPane() {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    ...

}

但是,函数代码不存在!谢谢。

你可能是对的。我不认为javax.*类是开源的,所以他肯定没有考虑实际的源代码。