首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含异常的流量控制

包含异常的流量控制
EN

Stack Overflow用户
提问于 2013-02-28 19:23:55
回答 2查看 134关注 0票数 2

当我运行下面的代码时,有两个结果。

代码语言:javascript
复制
 package scjp;

    public class ExceptionTest {

        public static void main(String[] args) {
            ExceptionTest test = new ExceptionTest();
            test.method1();
        }

        public void method1() {
            try {
                System.out.println("Try Block");

                if (!true) {
                    return;
                } else {
                    throw new RuntimeException();
                }
            }finally {
                System.out.println("Finally Block");
            }
        }
    }

一个结果是

代码语言:javascript
复制
Try Block
Exception in thread "main" java.lang.RuntimeException
    at scjp.ExceptionTest.method1(ExceptionTest.java:17)
    at scjp.ExceptionTest.main(ExceptionTest.java:7)
Finally Block

另一个是,

代码语言:javascript
复制
Try Block
Finally Block
Exception in thread "main" java.lang.RuntimeException
    at scjp.ExceptionTest.method1(ExceptionTest.java:17)
    at scjp.ExceptionTest.main(ExceptionTest.java:7)

每次我运行上面的代码时,答案都在变化。在我的理解中,它应该总是相同的结果。你能帮我什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-28 19:28:42

系统错误输出流(上面的堆栈跟踪,很可能是控制台中的红色)与系统输出流( System.out.println()语句)不同。因此,错误消息可能与正常的控制台输出不同步,因为两个流都写入控制台,但彼此独立。区别如下:

代码语言:javascript
复制
System.out.println("Some text");

打印到输出流

代码语言:javascript
复制
System.err.println("Error occurred!");

打印到错误流

当输出到同一控制台时,这两者可能会混合在一起。

票数 5
EN

Stack Overflow用户

发布于 2013-02-28 19:31:59

异常堆栈跟踪不会在同一个outputstrean上打印(它在System.err上打印),System.err和System.out不同步。

要始终具有相同的输出,您可以在System.err上而不是在System.out上打印消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15134271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档