Hi Lara, I have opened a bug report for this issue: https://issues.apache.org/jira/browse/DAFFODIL-2287
The issue is occuring at the Java/Scala language boundry. NotYetImplementedException extends Exception, but not RuntimeException. As such, Java considers it a checked exception, so assumes that it will only be thrown by functions which declare that they might throw it. In contrast, Scala does not have a concept of checked exceptions. Daffodil should annotate the parse function (and all functions in the japi) to inform the java compiler about what exceptions can be thrown; however we have apparently neglected to do so. In the meantime, a workaround you could use is to generically catch Exception, then use instanceOf to determine if a NotYetImplementedException occurred. Regards, Brandon ________________________________ From: Lara Blatchford <[email protected]> Sent: Wednesday, February 26, 2020 3:58 PM To: [email protected] <[email protected]> Subject: catching NotYetImplementedException Hi – I’ve inherited a Java application that uses Daffodil 2.3.0, and have found that when a user does something like attempt to parse a UTF-8 CSV file using the CSV schema, the application is terminated by org.apache.daffodil.exceptions.NotYetImplementedException when calling parse. I would like to be able to catch this exception and handle it gracefully, but if I try to catch it the compiler indicates that the parse method doesn’t throw the exception. I’m not familiar with Scala, but a quick search of the source shows that NotYetImplementedException extends UnsuppressableException – does this mean that somehow the exception may not be caught? Suggestions appreciated, Lara Blatchford Principal Engineer Nteligen, LLC [email protected]<mailto:[email protected]> (443) 864-5042 x110 [cid:[email protected]]
