2016-02-13 4 views
2

Я столкнулся с каким-то незнакомым синтаксисом Java, глядя на некоторый код из jstl 1.1.2. Мне кажется, что код, на который я смотрю, был обратным, скомпилированным Beyond Compare (или его плагином), так что это может иметь какое-то отношение к нему.Объявление объекта Java после возврата ;?

код в конце метода выглядит следующим образом:

... 
p.parse(page.getInputStream(), h); 
if(failed) 
    return vmFromString("taglib " + prefix + " (" + uri + ") allows only the " + 
    "following taglibs to be imported: " + permittedTaglibs); 
return null; 
SaxException ex; 
ex; 
return vmFromString(ex.toString()); 
ex; 
return vmFromString(ex.toString()); 
ex; 
return vmFromString(ex.toString()); 
} 

В JSTL 1.1, прежде чем они переработан в PermittedTaglibsHandler, это выглядит следующим образом:

... 
saxparser.parse(pagedata.getInputStream(), permittedtaglibshandler); 
if(failed) 
    return vmFromString("taglib " + s+ " (" + s1+ ") allows only the " + 
    "following taglibs to be imported: " + permittedTaglibs); 
return null; 
Object obj; 
obj; 
return vmFromString(((SaxException) (obj)).toString()); 
obj; 
return vmFromString(((ParserConfigurationException) (obj)).toString()); 
obj; 
return vmFromString(((IOException) (obj)).toString()); 
} 

Является ли этот странный синтаксис просто артефакт обратной компиляции, или есть такая вещь, как значимый код, который следует за оператором return?

Спасибо,

Rebeccah

+0

это обязательно в случае обратного компиляции! Вы не можете иметь несколько возвратов в функции на том же уровне. –

+0

Второе возвращение недостижима. Я предполагаю, что строка ex; тоже бесполезно. Он должен дать ошибку компиляции, но вы можете принудительно запустить, и он будет работать правильно, но второй возврат недостижим. –

ответ

1

код является просто исключение цикла обработчик настроен для работы с несколькими исключениями - таким образом, многочисленные заявления на возврат. Очевидно, что он не был правильно переведен на Java.

Смежные вопросы