java - 当我在 Java 中启动我的个性化异常时,为什么解析器不遵循我的代码顺序?

标签 java

使用这段代码:

class SimpleException extends Exception {}

public class SimpleExceptionDemo {

  public void f() throws SimpleException {
    System.out.println("Throw SimpleException from f()");
    throw new SimpleException();
  }
  public static void main(String[] args) {
    SimpleExceptionDemo sed = new SimpleExceptionDemo();
    try {
      sed.f();
    } catch(SimpleException e) {
      System.err.println("Caught it!");
    }

  }
}

在某些情况下我有这样的输出:

Caught it!
Throw SimpleException from f()

你知道为什么在“捕获它”之后打印“Throw SimpleException from f()”吗?

最佳答案

您正在两个不同的输出流上打印:

System.out.println("Throw SimpleException from f()");

System.err.println("Caught it!");

无法保证来自两个不同流的消息出现的顺序......使用相同的流,就可以了。

如果您对此类问题感兴趣,阅读

可能会很有趣

关于java - 当我在 Java 中启动我的个性化异常时,为什么解析器不遵循我的代码顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18913778/

相关文章:

java - 在哪里为在 glassfish 4 中运行的应用程序设置系统变量

java - java 中的 netlogo

java - 类声明中的 ArrayList<Product> 如何访问 ArrayList

java https登录和浏览

java - 以编程方式允许@RequestMapping

java - JFileChooser 和 eclipse

java - 如何在java中使用颜色选择器获取颜色名称

java - 在java中读取大文件并执行一些操作

java - 使用 Scala Flume Sink 到 Spark

java - 为什么我的文本区域不显示