Найдите учебник по построению компилятора и посмотрите на неопределённость.
Учитывая, что в Java и большинстве других языков с ужасным синтаксисом, пробел лежит.Как вы интерпретируете:
try
try
stuff();
catch (FooException exc)
handle(exc);
catch (BarException exc)
handle(exc);
catch (BazException exc)
handle(exc);
Является ли это:
try {
try {
stuff();
} catch (FooException exc) {
handle(exc);
} catch (BarException exc) {
handle(exc);
}
} catch (BazException exc) {
handle(exc);
}
Или:
try {
try {
stuff();
} catch (FooException exc) {
handle(exc);
}
} catch (BarException exc) {
handle(exc);
} catch (BazException exc) {
handle(exc);
}
Устраненная неопределенность решается путем сопоставления else
с самой внутренней if
.Мы хотим добавить более сложное усложнение, чтобы справиться с этим плохим стилем?Нет.