Revision 47017 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/WhileFunction.java
WhileFunction.java | ||
---|---|---|
1 | 1 |
package org.gvsig.expressionevaluator.impl.function.programming; |
2 | 2 |
|
3 |
import java.util.Objects; |
|
3 | 4 |
import org.apache.commons.lang3.Range; |
4 | 5 |
import org.gvsig.expressionevaluator.Codes; |
5 | 6 |
import org.gvsig.expressionevaluator.Function; |
6 | 7 |
import org.gvsig.expressionevaluator.Interpreter; |
8 |
import org.gvsig.expressionevaluator.impl.function.programming.BreakFunction.BreakException; |
|
9 |
import org.gvsig.expressionevaluator.impl.function.programming.ReturnFunction.ReturnException; |
|
7 | 10 |
import org.gvsig.expressionevaluator.spi.AbstractFunction; |
8 | 11 |
|
9 | 12 |
|
... | ... | |
46 | 49 |
@Override |
47 | 50 |
public Object call(Interpreter interpreter, Codes args) throws Exception { |
48 | 51 |
Object body = null; |
52 |
int argn = 0; |
|
49 | 53 |
boolean condition = getBoolean(interpreter, args, 0); |
50 | 54 |
while( condition ) { |
51 |
body = getObject(interpreter, args, 1); |
|
55 |
try { |
|
56 |
body = getObject(interpreter, args, 1); |
|
57 |
} catch(BreakException ex) { |
|
58 |
break; |
|
59 |
} catch(ReturnException ex) { |
|
60 |
throw ex; |
|
61 |
} catch(Exception ex) { |
|
62 |
String stmt = "unknown"; |
|
63 |
try { |
|
64 |
stmt = Objects.toString(args); |
|
65 |
} catch(Exception ex2) { |
|
66 |
|
|
67 |
} |
|
68 |
LOGGER.warn("Error in while function calling arg "+ argn + ", "+ stmt, ex); |
|
69 |
throw ex; |
|
70 |
} |
|
52 | 71 |
condition = getBoolean(interpreter, args, 0); |
72 |
argn++; |
|
53 | 73 |
} |
54 | 74 |
return body; |
55 | 75 |
} |
Also available in: Unified diff