[RESOLVIDO]Lançar uma exceção

2 respostas
javahunter

Ola Galera,

Quando lanço uma exceção nesse código, ela funciona se a exceção estiver depois de um System.out, mas se estiver antes o eclipse reclama. O que pode se isso?
import javax.sound.midi.*;
public class MusicTest1_01 {

	public void play() {
        try {
            Sequencer sequencer = MidiSystem.getSequencer();
            System.out.println("Successfully got a sequencer");
            throw new MidiUnavailableException(); // aqui ela funciona
        } catch(MidiUnavailableException ex) {
            System.out.println("Bummer");
        }
    }
    
    public static void main(String[] args) {
        MusicTest1 mt = new MusicTest1();
        mt.play();
    }
}
mas se inverter ele reclama
public void play() {
        try {
            Sequencer sequencer = MidiSystem.getSequencer();
            throw new MidiUnavailableException(); // aqui o eclipse reclama
            System.out.println("Successfully got a sequencer");
        } catch(MidiUnavailableException ex) {
            System.out.println("Bummer");
        }
    }
[]s

2 Respostas

fredericomaia10

Ao lançar uma exceção a execução do seu método é finalizada e volta para quem a chamou, ou se estiver tratando como neste caso pula direto para o catch que irá tratá-la. Ou seja, se tiver um código como este que informou:

public void play() { try { Sequencer sequencer = MidiSystem.getSequencer(); throw new MidiUnavailableException(); // aqui o eclipse reclama System.out.println("Successfully got a sequencer"); } catch(MidiUnavailableException ex) { System.out.println("Bummer"); } }
O System.out nunca seria executado, já que você está lançando uma exceção antes dele.

javahunter

OK entendi.
Obrigado pelo help fredericomaia10

Criado 18 de julho de 2013
Ultima resposta 18 de jul. de 2013
Respostas 2
Participantes 2