«Первый зашел, последний вышел» — так организован стек. Правило StackTrace в Java гласит: функция, вызванная последней, должна завершиться самой первой. То есть, если функция А вызвала функцию Б, а та вызвала функцию В, а та, в свою очередь, функцию Г, тогда чтобы выйти из функции Б, нужно сначала выйти из функции В, а для этого выйти из функции Г.