Во время записи большинство браузеров возвращали свойства в том же порядке, в каком они были вставлены, но это явно не гарантированное поведение, поэтому на него не следует полагаться.
Спецификация ECMAScript говорила:
Механика и порядок перечисления свойств ... не указаны.
Однако в ES2015 и более поздние нецелые ключи будут возвращены в порядке вставки.
Если оператор throw new <exception>
всегда является последним оператором в пути выполнения через тело метода или если тип возвращаемого значения метода - void
.
В вашем коде вы просто не можете обработать EmptyStackException
. Проблема возникает из-за введения catch
, в конце которого нет ни выражения return
, ни throw
.
public int pop() {
if (a.isEmpty()){
throw new NullPointerException();
}
int x = (int) a.remove(a.size() - 1);
if (x == (int) min.get(min.size() - 1)) {
min.remove(min.size() - 1);
}
return x;
}