@Override
    public void analysis(List<ReadSheet> readSheetList, Boolean readAll) {
        try {
            if (!readAll && CollectionUtils.isEmpty(readSheetList)) {
                throw new IllegalArgumentException("Specify at least one read sheet.");
            }
            analysisContext.readWorkbookHolder().setParameterSheetDataList(readSheetList);
            analysisContext.readWorkbookHolder().setReadAll(readAll);
            try {
                excelReadExecutor.execute();
            } catch (ExcelAnalysisStopException e) {
                if (LOGGER.isDebugEnabled()) {
                    LOGGER.debug("Custom stop!");
                }
            }
        } catch (RuntimeException e) {
            finish();
            throw e;
        } catch (Throwable e) {
            finish();
            throw new ExcelAnalysisException(e);
        }
    }
Performs the analysis of the Excel file based on the specified sheets or all sheets.
Ensures proper handling of exceptions and resource cleanup in case of errors.

@param readSheetList A list of ReadSheet objects specifying which sheets to analyze.
                     Can be null if all sheets are to be analyzed.
@param readAll A boolean indicating whether to analyze all sheets in the workbook.
               If true, the readSheetList parameter is ignored.
@throws IllegalArgumentException If neither readAll is true nor readSheetList contains any sheets.
@throws ExcelAnalysisException If a non-runtime exception occurs during the analysis.
fastexcel-core/src/main/java/cn/idev/excel/analysis/ExcelAnalyserImpl.java