Continuar Programa após exceção

Pessoa, tem um programa Java extremamente simples que fiz para estudar um pouco sobre exceções. Conseguir tirar boa parte das minhas dúvidas, porém só faltou uma coisa. Gostaria de saber como continuar meu programa após a exceção ser disparada. O meu programa simula um deposito e dispara exceções caso o valor do depópsito seja nagativo ou zero. O usuário pode digitar infinitos valores até decidir sair da aplicação. Porém, quando ele digita um valor negativo ou igual a zero, o programa lança a exceção e é encerrado. O que eu queria é q ele voltasse ao início do método e terminasse a excecução penas quando o usuário quisesse. Seguem as minhas classes:

Classe com a implementação do método

[code]package com.scjp;

import java.util.Scanner;

import com.scjp.excecao.ValorNegativoException;
import com.scjp.excecao.ValorZeroException;

public class ContaSalario {

private double salario;

public void deposita(double valor) throws ValorZeroException,
		ValorNegativoException {

	System.out.println("O valor do saldo atual é " + this.getSalario());
	System.out.println("Digite o valor do depósito");
	Scanner scanner = new Scanner(System.in);
	valor = scanner.nextDouble();

	if (valor < 0) {
		throw new ValorNegativoException("O valor precisa ser positivo");
	}
	if (valor == 0) {
		throw new ValorZeroException("O valor precisa ser maior que zero");
	}

	this.salario += valor;
	
	System.out.println("O valor do salário agora é " + this.getSalario());

	System.out.println("Deseja depoisitar mais algum valor?");
	String escolha = scanner.next();
	if (escolha.equalsIgnoreCase("sim")) {
		this.deposita(valor);
	} 

}

public double getSalario() {
	return salario;
}

}[/code]

Classe que testa o método

[code]

package com.scjp;

import com.scjp.excecao.ValorNegativoException;
import com.scjp.excecao.ValorZeroException;

public class TestaContaSalario {
public static void main(String[] args) {

	ContaSalario contaSalario = new ContaSalario();
	try {
		contaSalario.deposita(90);
	} catch (ValorZeroException e) {
		System.out.println(e.getMessage());
	} catch (ValorNegativoException e) {
		System.out.println(e.getMessage());
		
	}
	finally{
		System.out.println("Obrigado!");
	}
}

}[/code]

Exceções

[code]
package com.scjp.excecao;

public class ValorNegativoException extends Exception {

/**
 * 
 */
private static final long serialVersionUID = 1L;

public ValorNegativoException(String msg) {
	super(msg);
}

}[/code]

[code]package com.scjp.excecao;

public class ValorZeroException extends Exception {
/**
*
*/
private static final long serialVersionUID = 1L;

public ValorZeroException(String msg){
	super(msg);
}

}[/code]

Dentro do método deposita(…) da classe ContaSalario voccê pode colocar um loop.

Por exemplo:

[code]public void deposita(double valor) throws ValorZeroException,
ValorNegativoException {

	String escolha; //Coloca a variavel fora para que seja vista no while lá embaixo
	do {
		System.out.println("O valor do saldo atual é " + this.getSalario());
		System.out.println("Digite o valor do depósito");
		Scanner scanner = new Scanner(System.in);
		valor = scanner.nextDouble();

		if (valor < 0) {
			throw new ValorNegativoException("O valor precisa ser positivo");
		}
		if (valor == 0) {
			throw new ValorZeroException(
					"O valor precisa ser maior que zero");
		}

		this.salario += valor;

		System.out.println("O valor do salário agora é "
				+ this.getSalario());

		System.out.println("Deseja depoisitar mais algum valor?");
		Scanner scanner2 = new Scanner(System.in);
		escolha = scanner2.next();
		if (escolha.equalsIgnoreCase("sim")) {
			this.deposita(valor);
		} 
	} while ("sim".equals(escolha)); //se usuario digitar qualquer coisa diferente de "sim", o programa encerra

}[/code]

Valeu pela ajuda cara, mas tipo, o que eu queria era que o método retornasse ao estado inicial apóes lançar alguma exceção entende? A parte do usuário incluir vários valor até desejar sair ja ta implementada. O que eu quero mesmo é que quando ele depositar um valor negativo, o programa lcance a exceção, como já está fazendo, mas depois disse retorne ao início do método e peça para o usuário depositar um novo valor.

Faça com que a entrada desse valor, que será fornecida pelo usuário, esteja dentro de um loop e
que só seja encerrado quando o valor de entrada for válido.

Pessoal, acho que eu não to sabendo me expressar. O programa já contem a funcionalidade para encerrar no caso de um valor inválido mas o que eu quero é que o programa seja encerrado APENAS quando o usuário responder algo diferente de “sim” quando o programa perguntar se ele quer realizar um novo depósito. Da forma como está atualmente, se o usuário digitar um valor inválido, a exceção é capturada, é enviada uma mensagem ao usuário e o programa encerra. O que eu quero é que após a captura da exceção, seja dada ao usuário uma nova chance de depositasr um valor válido.

Bom … pelo jeito você quer usar as suas Exceptions de qualquer jeito, neh ? rs Neste caso você pode fazer o seguinte código abaixo. Desta forma, se algum valor inválido ocorrer, você lança a sua exceção e já pega com o bloco try…catch de Exception, exibindo a mensagem que você definiiu no momento que a exceção aconteceu. Desta forma, o programa continua a rodar.

try{ if (valor < 0) { throw new ValorNegativoException("O valor precisa ser positivo"); } if (valor == 0) { throw new ValorZeroException("O valor precisa ser maior que zero"); } catch(Exception e){ System.out.println(e.getEmessage()); }