Нам нужно иметь две функции. Они делают то же самое, но обрабатывают исключения, и один исключает исключение. Примечание. Если для обработки исключений исключение должно обрабатываться в commonFunc() ниже. Это не сработало бы для обработки исключения в functionHandlesEx(), потому что для обработки функции ему нужна переменная, доступная только в commonFunc(). Для повторного использования кода мы получили следующее. Вы видите какие-либо проблемы с этим (я вижу, что одна проблема: функция выдает исключение, но на самом деле исключение не возникает, когда isExceptionHandled истинно ----, но Java позволяет это)? Любой лучший способ сделать это? Мы находимся на Java 6. Спасибо.Любые проблемы с этим подходом к обработке исключений?
public void functionThrowsEx() throws Exception e
{
commonFunc(false); //false means does not handle exception
}
public void functionHandlesEx()
{
try
{
commonFunc(true); //true means handle exception
}
catch (Exception e)
{
// do nothing as exception handled
}
}
private void commonFunc(final boolean isExceptionHandled) throws Exception
{
try
{
....
}
catch (Exception e)
{
if (isExceptionHandled)
{
//handle the exception
}
else
{
throw e;
}
}
}
Если нет реального исключения, не имеет значения, является ли isExceptionHandled истинным или ложным, он не будет называться – RyPope
Он выглядит действительным. Я предполагаю, что try/catch в функцииHandlesEx является формальностью, чтобы компилятор не хватался за «исключение, которое не обрабатывается или не выбрасывается». (Спасибо, господин Гуденаф!) «Реальная» обработка выполняется в commonFunc. И вам нужны две разные внешние функции, так что функцииHandlesEx не нужно предложение 'throws'. –
(Я не могу придумать никакого способа сделать это проще. И в Java rethrowing исключение должно работать чисто. (Не так много в некоторых других средах.)) –