1 package com.opencsv.bean.exceptionhandler; 2 3 import com.opencsv.bean.CsvToBean; 4 import com.opencsv.bean.StatefulBeanToCsv; 5 import com.opencsv.exceptions.CsvException; 6 7 /** 8 * This interface defines a generic way of dealing with exceptions thrown 9 * during the creation of beans or their conversion to CSV output. 10 * @author Andrew Rucker Jones 11 * @since 5.2 12 */ 13 @FunctionalInterface 14 public interface CsvExceptionHandler { 15 16 /** 17 * <p>Determines how opencsv will handle exceptions that crop up during 18 * bean creation or writing. 19 * There are three ways of dealing with an exception:</p> 20 * <ol> 21 * <li>Ignore the exception. In this case, return {@code null}.</li> 22 * <li>Queue the exception. In this case, return either the original 23 * exception thrown, or a new exception that meets your needs better.</li> 24 * <li>Halt processing by throwing the exception. In this case, throw 25 * the exception or a new exception that meets your needs better.</li> 26 * </ol> 27 * <p>Please be cautioned: Due to the multi-threaded nature of opencsv's 28 * conversion routines, there is no guarantee that the exception thrown, 29 * if your chosen error handler throws exceptions, is the error in the 30 * input that would have caused the exception to be thrown if the input 31 * were processed in strict sequential order. That is, if there are four 32 * errors in the input and your error handler queues the first three but 33 * throws the fourth, the exception thrown might relate to <em>any</em> 34 * of the four errors in the input.</p> 35 * <p>If your exception handler queues a certain number of exceptions 36 * before throwing one, opencsv makes a best-faith effort to make sure all 37 * of the exceptions marked for queueing are actually available via 38 * {@link CsvToBean#getCapturedExceptions()} or 39 * {@link StatefulBeanToCsv#getCapturedExceptions()} after processing, 40 * but there are no absolute guarantees.</p> 41 * <p>This method must be thread-safe.</p> 42 * @param e The exception that was thrown 43 * @return The exception to be queued, or {@code null} if the exception 44 * should be ignored 45 * @throws CsvException If a halt to all processing is desired 46 */ 47 CsvException handleException(CsvException e) throws CsvException; 48 }