No final do vídeo, há a avaliação do if, e o thrown da exceção. Mas a linha seguinte de código está sendo executada ou não? O comportamento do throw é que nem um 'return' ou 'break', e pula o resto da execução do método Sacar?
Pois imagino que o certo, segundo a lógica, é a saldo não ser reduzido do valor, se não houver saldo suficiente.