'while'语句无法在不抛出异常的情况下完成 - Android

KiK*_*iKo 6 java android infinite-loop while-loop

用这种方法我TextView每秒都在更新.

 private void UpdatingTime(final String endTime, final long diffInDays) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while (true) {
                        try {
                            Thread.sleep(ONE_SECOND);
                            mHandler.post(new Runnable() {
                                @Override
                                public void run() {
                                    // Updating time every second
                                    long diffInHours = Methodes.diffInHours(endTime, diffInDays);
                                    long diffInMinutes = Methodes.diffInMinutes(endTime, diffInDays, diffInHours);
                                    long diffInSeconds = Methodes.diffInSeconds(endTime, diffInDays, diffInHours, diffInMinutes);

                                    tvTime2.setText(addZeroInFront(diffInHours)
                                            + ":" + addZeroInFront(diffInMinutes)
                                            + ":" + addZeroInFront(diffInSeconds));
                                }

                                private String addZeroInFront(long diffInHours) {
                                    String s = "" + diffInHours;
                                    if (s.length() == 1) {
                                        String temp = s;
                                        s = "0" + temp;
                                    }
                                    return s;
                                }
                            });
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            }).start();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这种方法很完美.但我得到了这个警告:

'while'语句无法在不抛出异常的情况下完成.

报告for,while或do语句只能通过抛出异常退出.虽然这些陈述可能是正确的,但它们通常是编码错误的症状.

我讨厌警告,我想解决它.我该如何解决这个警告,或者这个无限循环有更好的解决方案......?

SLa*_*aks 22

这个警告是误报; 你应该忽略它.

通常,无限循环是某处错误的标志; 在你的代码中,无限循环正是你想要的.


Lou*_*CAD 19

您可能正在使用Android Studio或IntelliJ.

如果是这样,您可以在包含无限循环的方法上方添加此内容以禁止警告:

@SuppressWarnings("InfiniteLoopStatement")
Run Code Online (Sandbox Code Playgroud)

或者在声明上方添加这个"神奇"评论:

//noinspection InfiniteLoopStatement
Run Code Online (Sandbox Code Playgroud)

这将告诉IDE这没关系.

更一般地说,当您收到误报警告时,请Alt+Enter执行以下屏幕截图中显示的操作(仅当您的课程充满误报时选择课程,同样的警告)

抑制警告图像

有关Jetbrains帮助的更多信息


Erc*_*sen 5

您可能在使用 IntelliJ IDEA 时收到此警告,对吗?

正如其他人已经提到的,这个警告通常可以被忽略。

如果您想禁用它,请打开“设置”并转到“编辑器”>“检查”并搜索Infinite loop statement. 只需取消选中该框即可完成。

一般来说,您只需将文本光标放在要禁用的警告上,然后按Alt + Enter,然后单击检查信息字段并单击“禁用检查”