Sim… todas PODEM ser lançadas programaticamente…
Mas veja pergunta… o segredo está na palavra “appropriately”… apropriadamente…
ClassCastException = lançada pela JVM quando um cast incompativel é executado…
NoClassDefFoundError = Lançada pela JVM quando não encontra uma classe no seu classpath…
ArrayIndexOutOfBoundsException = Quando um indice de array inválido é acessado…
NullPointerException = Lançada pela JVM quando uma referência aponta para um local de memória “vazio”…
A cada cast que você faz, você verifica se a referência é compatível para o novo tipo?^
Não… geralmente você sabe… e caso ela não for… a JVM se encarrega de lançar…
A cada membro de objeto que você acessa, você verifica antes se é nulo?
Não…
Mas se caso acontecer, a JVM lança o nullpointer…
A cada acesso a um indice do array, você verifica se está dentro do intervalo?
Não, caso acessar, a JVM lança indexofofbounds…
Não é apropriado você fazer isso…
Agora…
Se você estiver usando a API do javaSE, e formatar um número errado… a API do JSE lança um NumberFormatException para você… informando o erro…
Essa é a pergunta…
Which can appropriately be thrown by a programmer using Java SE technology to create a desktop application?