Interromper os métodos "pais" que chamaram determinados métodos

Tenho a seguinte situação:
Um método que chama outro, que chama outro, que chama outro. Nesse ultimo, de acordo com situações especificas, terá que interromper a execução dele mesmo, além de todos os outros métodos que chamaram ele, menos o primeiro método que é o metodo main.
Por exemplo:

public static void main(String[] args) {
        metodoUm();
        System.out.println("Isso aqui deve mostrar de qualquer jeito...");
    }

    private static void metodoUm() {
        metodoDois();
        System.out.println("Isso deve ser mostrado caso de tudo certo");
    }

    private static void metodoDois() {
        metodoTres();
        System.out.println("Isso deve ser mostrado caso de tudo certo");
    }

    private static void metodoTres() {
        try {
            System.out.println("Tudo deu certo");
        } catch (Exception e) {
            System.out.println("Deu pau, não deve mostrar nada alem disso e daquela mensagem no método main");
        }
    }

Alguma idéia de como fazer isso sem muita gambiarra?

Lança uma exceção com throw e provoca a interrupção em cadeia. Exemplo:

	public static void main(String[] args) {
        try {
		metodoUm();
        } catch (IOException e) {
			System.err.println(e.getMessage());
		}
        System.out.println("Isso aqui deve mostrar de qualquer jeito...");
    }

    private static void metodoUm() throws IOException {
        metodoDois();
        System.out.println("Isso deve ser mostrado caso de tudo certo");
    }

    private static void metodoDois() throws IOException {
        metodoTres();
        System.out.println("Isso deve ser mostrado caso de tudo certo");
    }

    private static void metodoTres() throws IOException {
        try {
            System.out.println("Tudo deu certo");
        } catch (Exception e) {
            throw new IOException("Deu pau, nãdeve mostrar nada alem disso e daquela mensagem no método main");
        }
    }

wiliamps

foi o que eu imaginei tambem, porém vai ficar complicado pois no sistema eu ja estou fazendo o try catch dentro do ultimo método e caso da algum erro, simplesmente mando um System.exit(1) e mostra uma mensagem pro usuario… se for fazer desse jeito, vou ter que criar excessões especificas pra cada caso e tratar elas todas no método principal…

Acredito que a barreira sua seja a forma de seu algoritimo, pois apenas sugeri uma técnica.

Você também pode fazer seus métodos retornarem o resultado, pode ser booleano por exemplo. Se true, tudo certo, seguir, senão é que deu erro.

Outra forma é um atributo de classe tipo um semáforo, você deixa ele verde para o trânsito seguir, mas se tive um acidente, você liga o farol vermelho.

wiliamps