[ 
https://issues.apache.org/jira/browse/JEXL-207?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15404329#comment-15404329
 ] 

Dmitri Blinov commented on JEXL-207:
------------------------------------

Do I understand that now we have three combinations of inital parameters:

* non-strict mode - errors and exceptions are ignored always silently
* strict verbose (non-silent) - errors and exceptions are breaking script 
execution
* strict silent - errors and exceptions are not breaking script execution but 
log message is written about 

> Inconsistent error handling
> ---------------------------
>
>                 Key: JEXL-207
>                 URL: https://issues.apache.org/jira/browse/JEXL-207
>             Project: Commons JEXL
>          Issue Type: Bug
>    Affects Versions: 3.0
>            Reporter: Dmitri Blinov
>            Assignee: Henri Biestro
>             Fix For: 3.0.1
>
>
> I can't figure out what is the logic behind current implementation of script 
> interruptablity/error handling.
> For example the following script will execute up to the end and return 42 in 
> any mode (strict/silent)
> {code}
> x = null.1; return 42
> {code}
> whereas the following script will break with exception "bean is null" also in 
> any mode (strict/silent)
> {code}
> null.1 = 2; return 42
> {code}
> and the following script will throw an exception in strict mode regardless of 
> being silent/non-silent
> {code}
> z = [1,2]; x = z[3]; return 42
> {code}
> The documentation states that
> {quote}
> The strict flag tells the engine when and if null as operand is considered an 
> error, the silent flag tells the engine what to do with the error (log as 
> warning or throw exception)
> {quote}
> From the first example we see that null is not considered as error when we 
> resolve bean property value, even does not log a message, while it might be 
> expected in strict mode. From the second example we see that null is always 
> considered as an error when we set bean property value, but is never ignored 
> (always breaks script execution), even in silent mode. From the third example 
> we see that AIOOBE is also considered as an error that breaks script 
> execution in strict mode, regardless of silent/non-silent mode.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to