“while”语句如果不引发异常就无法完成 - Android

2022-09-03 03:12:10

使用这种方法,我每秒都会更新一次。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();
        }
    }

这种方法非常完美。但是我得到了这个警告:

“while”语句如果不引发异常,就无法完成。

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

我讨厌警告,我想修复它。我该如何修复此警告,或者有更好的解决方案来解决这个问题?


答案 1

此警告是误报;你应该忽略它。

通常,无限循环是某个地方错误的标志;在你的代码中,无限循环正是你想要的。


答案 2

您可能使用的是 Android Studio 或 IntelliJ。

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

@SuppressWarnings("InfiniteLoopStatement")

或者在语句上方添加此“魔术”注释:

//noinspection InfiniteLoopStatement

这将告诉 IDE 这没问题。

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

suppress warning image

有关 Jetbrains 帮助的更多信息


推荐