Condition is always true

В общем дана задача на нахождение НОД. Следуя данному алгоритму - всё работает, кроме одного. Idea ругается что в while (a != 0 || b != 0) - Condition is always true. При запуске код падает с ArithmeticException: / by zero, потому что даже когда a либо b доходит до 0, то всё равно выполняется цикл while

public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int a = Integer.parseInt(reader.readLine());
        int b = Integer.parseInt(reader.readLine());
        if (a <= 0 || b <= 0) {
            throw new Exception();
        } else {
            while (a != 0 || b != 0) {
                if (a > b)
                    a = a % b;
                else
                    b = b % a;
            }
        }

        System.out.println(a + b);
    }

Вот в таком варианте - всё работает, исключений нету

while (true) {
            if (a != 0) {
                if (b != 0) {
                    if (a > b)
                        a = a % b;
                    else
                        b = b % a;
                } else
                    break;
            } else
                break;
        }

Ответы (0 шт):