Duvida sobre codigo Java

Bom galera estou resolvendo questão de concurso e estou com duvida no seguinte codigo

package concurso;

public class Prova {

	public static void main(String[] args) {
		int calcula = calcula(new int[]{6, 8, 9, 2}, new int[]{6,2,4});
		System.out.println("valor é: " + calcula);
	}

	public static int calcula(int[] v1, int[] v2) {
		int t;
			if (v1.length > v2.length) {
				t = v1.length;
			}else{
				t = v2.length;
			}
			
		int r = 0;
			for (int i = 0; i < t ; i++) {
				r += v1[i] * v2[i];
			}
		return r;
	}
}

Minha duvida é: Porque está caindo em uma Exception.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
	at concurso.Prova.calcula(Prova.java:20)
	at concurso.Prova.main(Prova.java:6)

acho que entendi, o array v2 tem a menor posição do que a v1, então cai em uma Exceção. Correto?

Experimente trocar:

if (v1.length > v2.length) {
	t = v1.length;
}else{
	t = v2.length;
}

Por:

if (v1.length > v2.length) {
	t = v2.length;
}else{
	t = v1.length;
}

obs.: Não testei, mas creio que, se o array v1 for maior do que o array v2, então “t” deve assumir o tamanho do menor array.