How to throw exception from spring batch processor process() method to Spring batch job started method?

半世苍凉 提交于 2019-12-01 06:54:48

Here is startJob which I use the to start the job in web application, Tye to throw specific exception

public boolean StartJob()
            throws MyException{



        try {

                final JobParameters jobParameters = new JobParametersBuilder()
                        .addLong("time", System.nanoTime())
                        .addString("file", jobInputFolder.getAbsolutePath())
                        .toJobParameters();

                final JobExecution execution = jobLauncher.run(job,
                        jobParameters);
                final ExitStatus status = execution.getExitStatus();

                if (ExitStatus.COMPLETED.getExitCode().equals(
                        status.getExitCode())) {
                    result = true;
                } else {
                    final List<Throwable> exceptions = execution
                            .getAllFailureExceptions();
                    for (final Throwable throwable : exceptions) {

                        if (throwable instanceof MyException) {
                            throw (MyException) throwable;
                        }
                        if (throwable instanceof FlatFileParseException) {

                            Throwable rootException = throwable.getCause();
                            if (rootException instanceof IncorrectTokenCountException) {

                                throw new MyException(logMessage, errorCode);
                            }
                            if (rootException instanceof BindException) {
                                BindException bindException = (BindException) rootException;
                                final FieldError fieldError = bindException
                                        .getFieldError();
                                final String field = fieldError.getField();

                                throw new MyException(logMessage, errorCode);
                            }
                        }

                    }
                }
            }
        } catch (JobExecutionAlreadyRunningException ex) {

        } catch (JobRestartException ex) {

        } catch (JobInstanceAlreadyCompleteException ex) {

        } catch (JobParametersInvalidException ex) {

        } catch (IOException ex) {

        } finally {

        }

        return result;
    }

If Item processor is as below

@Override
public KPData process(InputDetail inputData) throws MyException {
  try {
    business logic here
  }
  catch(Exception e) {
    throw new MyException("Some issue");
  }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!