Primeiramente, sem nenhuma ironia, sugiro que vc leia algum tutorial sobre exceções - por exemplo, este aqui, que é bem básico e completo.
Lá tem inclusive capítulos sobre como lançar e capturar uma exceção. Basicamente, para lançar, basta usar throw
, não esquecendo de declarar que o método pode lançá-la:
public void fazAlgo() throws AlgoException {
if (condicao) {
throw new AlgoException();
}
// ... restante do código
}
E ao chamar o método, vc usa um try
/catch
para capturar a exceção:
try {
fazAlgo();
// se chegou aqui é porque não lançou a exceção
// ... restante do código
} catch(AlgoException e) {
// se caiu aqui, é porque a exceção foi lançada
}
Dito isso, usar exceções nem sempre é a melhor opção. Por exemplo, o seu método que busca a placa poderia retornar se a placa foi ou não encontrada:
public boolean pesquisaPlaca() {
boolean encontrouPlaca;
for (int v = 0; v < vCarro.length; v++) {
if (vCarro[v].getPlaca().equalsIgnoreCase(pesquisa)) {
// encontrou, retorna true
return true;
}
}
// se chegou aqui é porque não encontrou, então retorna false
return false;
}
Assim, ao chamar o método, basta verificar se encontrou:
if (pesquisaPlaca()) {
// encontrou, continua o código
} else {
// não encontrou, mostra mensagem de erro, etc
}
Ou ainda, o método retorna o veículo que tem a placa, ou null
se não encontrar:
public Veiculo pesquisaPlaca() {
for (int v = 0; v < vCarro.length; v++) {
if (vCarro[v].getPlaca().equalsIgnoreCase(pesquisa)) {
// encontrou, retorna o carro
return vCarro[v];
}
}
// se chegou aqui é porque não encontrou, então retorna null
return null;
}
Assim, ao chamar o método, basta verificar se o carro não é nulo:
Veiculo veiculo = pesquisaPlaca();
if (veiculo != null) {
// encontrou, continua o código
} else {
// não encontrou, mostra mensagem de erro, etc
}
E aproveitando, vc também poderia usar o enhanced for:
public Veiculo pesquisaPlaca() {
for (Veiculo veiculo : vCarro) {
if (veiculo.getPlaca().equalsIgnoreCase(pesquisa)) {
// encontrou, retorna o carro
return veiculo;
}
}
// se chegou aqui é porque não encontrou, então retorna null
return null;
}
Claro que sem mais detalhes do seu projeto (requisitos, etc) não dá pra cravar o que é melhor. Mas em geral, exceções são custosas e eu prefiro usar para situações realmente excepcionais. Uma placa não ser encontrada parece estar dentro da regra de negócio (inferência minha), e pra mim faz mais sentido o próprio método que busca retornar se encontrou ou não, em vez de lançar exceção.