ExecutionException.java
package edu.udel.cis.vsl.tass.semantics.IF;
import edu.udel.cis.vsl.tass.dynamic.IF.DynamicException;
import edu.udel.cis.vsl.tass.util.Source;
import edu.udel.cis.vsl.tass.util.Sourceable;
/**
* An ExecutionException extends an ExecutionProblem by adding a specific
* sourceable model element. The sourceable object provides a file name, line
* number, text, etc., referring to an exact region of source code. This is
* required for useful error reporting.
*
* @author siegel
*/
public class ExecutionException extends ExecutionProblem {
private static final long serialVersionUID = -7702573560900968531L;
private Sourceable element;
public ExecutionException(Sourceable element, ErrorKind kind,
Certainty certainty, String message) {
super(kind, certainty, message);
assert element != null;
this.element = element;
}
public ExecutionException(Sourceable element,
DynamicException dynamicException, Certainty certainty) {
super(dynamicException, certainty);
assert element != null;
this.element = element;
}
public ExecutionException(Sourceable element, ExecutionProblem problem) {
this(element, problem.kind(), problem.certainty(), problem.getMessage());
}
public Sourceable element() {
return element;
}
public String toString() {
String result = super.toString();
Source source = element.getSource();
result += "\nSource location: ";
if (source != null)
result += source.toString();
return result;
}
}