Вы обнаруживаете исключение, отличное от того, которое явно создается вашим кодом и выдает 1 . Исключение, которое вы ловите, не имеет сообщения. Вам нужно регистрировать все исключение, а не только сообщение об исключении. (Среди прочего, это скажет вам, что представляет собой фактический класс пойманного исключения и где было создано / выброшено исключение.)
Основываясь на том факте, что исключение не имеет сообщения, я бы предположил, что это NPE, вызванное тем, что stud
или acc
равен нулю, или stud.getCall()
возвращает null
... или что-то типа того. NullPointerException
, сгенерированный изначально (т.е. JVM), имеет null
сообщение 2 .
Бросок java.lang.Exception
- это плохая практика
Ваша проблема иллюстрирует, почему вообще плохая идея создать / бросить Exception
Когда вы бросаете Exception
, становится почти невозможно провести различие между ним и другими (неожиданными) исключениями в предложении catch
. И вот что здесь произошло: вы поймали неправильное исключение.
Вам следует выбрать более конкретное исключение, и, если подходящего не существует, реализовать одно собственное.
1 - Вы также можете использовать e.printStackTrace()
, вызов логгера или отладчик, чтобы узнать, какое исключение вы действительно перехватили.
2 - Это не так на Android. Там у NPE есть полезное сообщение, которое дает контекстную информацию.