首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个break语句break不起作用?

为什么这个break语句break不起作用?
EN

Stack Overflow用户
提问于 2010-04-19 20:53:29
回答 5查看 2.2K关注 0票数 6

我有以下代码:

代码语言:javascript
复制
public void post(String message) {
    final String mess = message;
    (new Thread() {
        public void run() {
            while (true) {
                try {
                    if (status.equals("serviceResolved")) {
                        output.println(mess);
                        Game.log.fine("The following message was successfully sent: " + mess);
                        break;
                    } else {
                        try {Thread.sleep(1000);} catch (InterruptedException ie) {}
                    }
                } catch (NullPointerException e) {
                    try {Thread.sleep(1000);} catch (InterruptedException ie) {}
                }
            }
        }
    }).start();
}

在我的日志文件中,我发现有很多这样的行:

代码语言:javascript
复制
The following message was successfully sent: blablabla
The following message was successfully sent: blablabla
The following message was successfully sent: blablabla
The following message was successfully sent: blablabla

我的程序没有响应。

在我看来,break命令不起作用。可能的原因是什么?

有趣的是,这种情况并不总是发生。有时我的程序运行得很好,有时会出现上述问题。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-19 21:03:40

每次调用post方法时,都会启动一个新线程。我认为这个方法是可以的,但是调用者程序不是这样的。

票数 3
EN

Stack Overflow用户

发布于 2010-04-19 20:57:53

这行代码会不会成功:

代码语言:javascript
复制
output.println(mess);

但是这一行抛出了一个空指针异常:

代码语言:javascript
复制
Game.log.fine(...

在这种情况下,您将在控制台上看到输出,但从未到达break语句。Game.log可能是空的吗?

票数 4
EN

Stack Overflow用户

发布于 2010-04-19 21:04:52

Game.log.fine到底是做什么的?这可能是因为它在输出之后抛出了一个NullPtrException,还是因为您多次调用了post方法?

删除NullPointerException的捕获,这是不好的风格(出现NullPointerException总是一个编程错误),并在方法中添加更多的日志消息(或者使用调试器)。

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

https://stackoverflow.com/questions/2667499

复制
相关文章

相似问题

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