Pessoal to precisando dar um break dentro do foreach… to vendo alguns materiais na internet dizendo uma coisa ou outra, mas nada funciona.
Ja tentei “continue”, “throw new BreakException”,“break”,“GOTO”.
A unica coisa que deu certo foi system.exit(); Mas isso é uma coisa fora de questão.
Tambem preciso deixar claro que preciso do FOREACH.
Se alguem puder me ajudar agradeço. segue o código.
@FXML
private void salvar() {
conta = 0;
criarTempExcel(rows);
rows.forEach(row -> {
try {
if (row.getCell(0).getCellType().toString() != "BLANK") {
List<Cell> cells = (List<Cell>) toList(row.cellIterator());
try {
ExcelLoadDao.getInstance().popularTemporaria(cells);
conta ++;
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Erro ao salvar carga: ");
**O BREAK DEVERIA ESTAR AQUI**
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao salvar carga: ");
**O BREAK DEVERIA ESTAR AQUI**
}
}
} catch (Exception e) {
e.printStackTrace();
}
});
Vc consegue com um return (que irá interromper a execução da função lambda).
List<Integer> n = Stream.of(1,2,3,4,5,6,7,8,9,0).collect(Collectors.toList());
n.forEach(num -> {
if (num > 5) {
return;
}
System.out.println(num);
});
Porém, acho que seu código ficaria melhor assim:
try {
rows.stream()
.filter(row -> row.getCell(0).getCellType().toString() != "BLANK")
.map(row -> row.cellIterator())
.forEach(cells -> {
try {
ExcelLoadDao.getInstance().popularTemporaria(cells);
conta++;
} catch(Exception ex) {
throw new ErroPopularTemporariaException(ex); // Essa "ErroPopularTemporariaException" deve ser RuntimeException
}
});
} catch (ErroPopularTemporariaException e) {
JOptionPane.showMessageDialog(null, "Erro ao salvar carga: " + e.getMessage());
}
Obrigado pela resposta Lucas, to tentando implementar aqui mas da erro no ErroPopularTemporariaException(ex);
sou novo em programação
Tu tem que criar essa classe.
public class ErroPopularTemporariaException extends RuntimeException {
public ErroPopularTemporariaException(Throwable cause) {
super(cause);
}
}
Deu certo?
Ah, para enxugar mais o código, vc pode fazer com que o método popularTemporaria lance a exceção ErroPopularTemporariaException em caso de erro. Com isso, vc poderá remover o try ... catch
do foreach
. É uma solução para deixar o código mais limpo.
1 curtida