Dúvida gerando exceções: lista de pilhas

Oi pessoal, boa noite, tudo bem? Sobre OverflowException e UnderflowException…

O que tá acontecendo nesse código? (abaixo das perguntas)

Caso a pilha já esteja cheia, uma exceção de overflow é lançada (linha 30). Caso a pilha não esteja cheia, o atributo top é incrementado e o objeto é inserido na pilha (linha 28).

Ok, mas pq é lançada essa exceção?

Caso a pilha esteja vazia (linha 34), uma exceção de underflow é lançada. Caso a pilha não esteja vazia, uma referência ao objeto do topo da pilha é armazenada na variável local o, o valor null é atribuído à posição do vetor na qual encontra-se o topo, o atributo top é decrementado e a referência ao elemento que estava no topo é retornada.

Novamente ok mas… pq essa exceção?

Além disso, alguma recomendação sobre como e onde estudar exceções?

Obrigado! :revolving_hearts:

Porque são duas situações excepcionais:
Se a pilha está cheia e você tenta empilhar mais um item, ela não pode decidir por você o que fazer neste caso, então é lançado a exceção.
Ou se ela está vazia e você tenta desempilhar um item, isso é mancada do programador, a pilha não sabe contornar essa situação, então ela lança exceção.

1 curtida