Отсутствует заявление о возврате, что мне не хватает - PullRequest
0 голосов
/ 14 сентября 2018

Я написал метод, который будет подтверждать контроллер, возвращая true и false, я возвращаю true внутри try, если все идет хорошо, он возвращает true, и я возвращаю false внутри блоков catch, но все равно метод показывает мне ошибку "missing return statement" что такое лучший способ сделать это.

Приведенный ниже метод, написанный на java, отправит обратно значение true или false контроллеру.

Во-вторых, я хочу передать сообщение об исключении отсюда на контроллер, я думаю о возвращении строки, это хороший подход,

Пожалуйста, предложите мне лучший способ обработки исключений

 public boolean pickSalayData(String yearMonth, String regionId, String circleId, Userdetail loginUser) throws MyExceptionHandler {
        String tableSuffix = yearMonth.substring(4, 6) + yearMonth.substring(0, 4);

        log.info("Pick Salary Data From ERP " + DateUtility.dateToStringDDMMMYYYY(new Date()));
        List<SalaryDetailReport> detailReports = hRMSPickSalaryDataDAO.findAll(yearMonth, regionId, circleId);

        TransactionDefinition def = new DefaultTransactionDefinition();
        TransactionStatus trstatus = transactionManager.getTransaction(def);
        try {
            List<SalaryDetailReport> salaryDetailReport = null;
            int countDetail = 0;
            if (detailReports != null && detailReports.size() > 0) {

                for (SalaryDetailReport salary : detailReports) {
                    try {
                        if (countDetail % COMMIT_COUNT == 0) {
                            if (salaryDetailReport != null) {
                                salaryDetailReportDAO.save(salaryDetailReport, tableSuffix);
                                reportHistoryDAO.save(salaryDetailReport, loginUser);
                            }
                            salaryDetailReport = new ArrayList<SalaryDetailReport>();
                        }
                        salaryDetailReport.add(salary);
                        countDetail++;

                    } catch (Exception e) {
                        log.error("Error on Save Salary Pay Head Details Data from ERP to Prayas .");
                    }
                }
                if (salaryDetailReport != null && salaryDetailReport.size() > 0) {
                    salaryDetailReportDAO.save(salaryDetailReport, tableSuffix);
                    reportHistoryDAO.save(salaryDetailReport, loginUser);
                }
            } else {
                throw new MyExceptionHandler("No record for Save in Database from ERP.");
            }
            salaryDetailReportDAO.update(tableSuffix, regionId, circleId);
            List<SalaryDetailReport> reports = salaryDetailReportDAO.findAll(tableSuffix, regionId, circleId);
            if (reports != null && reports.size() > 0) {
                for (SalaryDetailReport salaryDetail : reports) {
                    try {
                        SalaryDetail sd = new SalaryDetail();
                        sd.setDetailReport(salaryDetail);
                        salaryDetailDAO.save(sd, tableSuffix);
                    } catch (Exception e) {
                        log.error("Error occured", e);
                        e.printStackTrace();
                        throw new MyExceptionHandler(" Error :" + e.getMessage());
                    }
                }
                System.out.println("data found");

            } else {
                log.error("Salary Record Not Found.");
                throw new MyExceptionHandler("No record Found.");
            }
            salaryDetailDAO.updateEarningDeduction(tableSuffix);
            //salaryDetailDAO.updateEarningDeductionsInSDT();
            transactionManager.commit(trstatus);
            try {
                hRMSPickSalaryDataDAO.update(regionId, circleId, yearMonth);
                return true;
            } catch (Exception ex) {
                log.error("Some error : ", ex);
            }

//            //   System.out.println("Completed =============================");
        } catch (MyExceptionHandler ex) {
            transactionManager.rollback(trstatus);
            ex.printStackTrace();
            log.error("Failed to Save Salary data  :" + ex.getMessage());
            return false;

        } catch (Exception ex) {
            transactionManager.rollback(trstatus);
            ex.printStackTrace();
            log.error("Error occured on Save Salary data.", ex);
            return false;
        }
    }

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Если этот код вызывает исключение, то следующий код catch не будет введен, и, следовательно, нет возвращаемого значения

  try {
     hRMSPickSalaryDataDAO.update(regionId, circleId, yearMonth);
     return true;
  } catch (Exception ex) {
     log.error("Some error : ", ex);
     **edit**
     return `true||false`;
  }

} catch (...) {
     return something;
}
0 голосов
/ 14 сентября 2018

Вы пропустили оператор return для следующего блока catch:

 catch (Exception ex) {
                log.error("Some error : ", ex);
 }

Либо вы добавляете оператор return в этот блок catch, либо в конец метода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...