У меня есть исключение во время выполнения, которое я создал в моем проекте, и я хочу убедиться, что он попал в один из моих классов, так что вся программа не взрывается, когда это происходит (т.е. Если кто-то удаляет try/catch Я хочу знать, если что-то в средствах сборки или статического анализа не работает). К сожалению, поскольку java не принуждает меня иметь оператор try/catch для этого неконтролируемого исключения, нет способа принудительного его применения во время компиляции. (Я не могу изменить свое исключение как исключенное исключение).
Мне интересно, есть ли какой-либо способ принудительного применения инструкции try/catch в определенном классе, возможно, с использованием пользовательских правил checkstyle/pmd/findbugs. (убедитесь, что конкретный метод в определенном классе имеет оператор try catch для моего исключения во время выполнения).
Благодарю.
В Checkstyle, FindBugs или PMD (или их пакетов) нет существующего детектора, который делает то, что вы хотите. Поэтому вам придется сворачивать самостоятельно.
Самый простой способ решить это без реального программирования - это написать правило PMD XPath, которое ищет метод X
в классе Y
и блок catch
который улавливает ваше исключение во время выполнения под ним.
В противном случае пользовательская проверка Checkstyle будет следующей самой легкой, но для этого требуется небольшая часть программирования, и вам придется впоследствии развернуть свою собственную проверку везде.
Вы также можете написать свой собственный детектор FindBugs, как это предлагается в другом ответе, но поскольку вы не будете использовать какие-либо конкретные функции FindBugs (например, анализ байтового кода), это кажется мне излишним.
Идея исключений во время выполнения заключается в том, что вам не нужно указывать предложение "throws XYException".
Однако вы можете проверить findbugs-contrib. Если это не решит проблему, вы можете написать свой собственный детектор ошибок. Вот несколько отправных точек: