gbidsilva opened a new pull request, #352:
URL: https://github.com/apache/commons-csv/pull/352

   See related Jira issue: https://issues.apache.org/jira/browse/CSV-310
   
   When we try to print CSV content using the `CSVFormat` and `CSVPrinter`, we 
can ger it done with following sample code.
   
   ```
   public void testHappyPath() throws IOException {
       CSVFormat csvFormat = CSVFormat.DEFAULT.builder()
               .setHeader("Col1", "Col2", "Col3", "Col4")
               .setQuoteMode(QuoteMode.NONE)
               .setEscape('#')
               .build();
   
       CSVPrinter printer = new CSVPrinter(System.out, csvFormat);
   
       List<String[]> temp = new ArrayList<>();
   
       temp.add(new String[] { "rec1", "rec2\"", "", "rec4" });
       temp.add(new String[] { "", "rec6", "rec7", "rec8" });
   
       for (String[] temp1 : temp) {
           printer.printRecord(temp1);
       }
       printer.close();
   }
   ```
   
   In above sample I have used `setQuoteMode(QuoteMode.NONE)`. However, if we 
do not set the escape character using `setEscape('#')` then it would result in 
following exception.
   `java.lang.IllegalArgumentException: No quotes mode set but no escape 
character is set.`
   
   At first, I was wondering why I was getting this error. Then I looked into 
the source and figured out that `CSVFormat.printWithEscapes()` method 
internally using `getEscapeCharacter().charValue()` method to print records.
   
   However, the error message which we are getting is sort of misleading. It 
implies that the code has not set any quote mode even though we set it.
   Simple and more meaningful exception message could be: `Quote mode set to 
NONE but no escape character is set`.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to