Есть два вида исключений: проверяемые и непроверяемые.
Если метод может выбросить проверяемое исключение (дочерний класс от Exception, но не RuntimeException), то такой метод должен объявить это в своей шапке после слова throws. В этом случае компилятор удостоверится в том, что в точке вызова этого метода приняты меры по обработке или пробросу этого исключения.
Непроверяемые исключения (RuntimeException и его дочерних классов) объявлять и обрабатывать не требуется. Но если такое вдруг выпадет и его некому будет обработать, то оно поднимется через весь стек вызовов и остановит поток, исполняющий программу.
Если вы хотите перехватывать все исключения, сделайте блок catch (Exception e) или более общий блок catch (Throwable t).
Если же вам нужно перехватывать конкретное непроверяемое исключение, то тут можно:
а) обратиться к документации на метод;
б) посмотреть исходный код метода и узнать, что он может выбрасывать;
в) определить опытным путем, какую ошибку он по факту бросает, какую вы намерены перехватить.
Например, у метода
Integer.parseInt в документации явно прописано, что он может выбросить NumberFormatException. Исключение непроверяемое, поэтому его не обязательно перехватывать. Но если вам нужно, то можете перехватить.