зеркало из https://github.com/mozilla/gecko-dev.git
Make sure that for Rhino-generated exceptions Throwable.getMessage() contains script file and line information.
This commit is contained in:
Родитель
19184d9a5b
Коммит
cfe01facb2
|
@ -1601,7 +1601,15 @@ public class Context
|
||||||
if (e instanceof EcmaError) {
|
if (e instanceof EcmaError) {
|
||||||
throw (EcmaError)e;
|
throw (EcmaError)e;
|
||||||
}
|
}
|
||||||
throw new WrappedException(e);
|
String sourceName = null;
|
||||||
|
int lineNumber = 0;
|
||||||
|
Context cx = Context.getCurrentContext();
|
||||||
|
if (cx != null) {
|
||||||
|
int[] linep = { 0 };
|
||||||
|
sourceName = cx.getSourcePositionFromStack(linep);
|
||||||
|
lineNumber = linep[0];
|
||||||
|
}
|
||||||
|
throw new WrappedException(e, sourceName, lineNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -41,14 +41,11 @@ package org.mozilla.javascript;
|
||||||
*/
|
*/
|
||||||
public class EvaluatorException extends RuntimeException
|
public class EvaluatorException extends RuntimeException
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an exception with the specified detail message.
|
* @deprecated Use
|
||||||
*
|
* {@link EvaluatorException(String detail, String sourceName,
|
||||||
* Errors internal to the JavaScript engine will simply throw a
|
int lineNumber)}
|
||||||
* RuntimeException.
|
* to construct detailed error messages.
|
||||||
*
|
|
||||||
* @param detail a message with detail about the exception
|
|
||||||
*/
|
*/
|
||||||
public EvaluatorException(String detail)
|
public EvaluatorException(String detail)
|
||||||
{
|
{
|
||||||
|
@ -61,6 +58,22 @@ public class EvaluatorException extends RuntimeException
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an exception with the specified detail message.
|
||||||
|
*
|
||||||
|
* Errors internal to the JavaScript engine will simply throw a
|
||||||
|
* RuntimeException.
|
||||||
|
*
|
||||||
|
* @param detail the error message
|
||||||
|
* @param sourceName the name of the source reponsible for the error
|
||||||
|
* @param lineNumber the line number of the source
|
||||||
|
*/
|
||||||
|
public EvaluatorException(String detail, String sourceName,
|
||||||
|
int lineNumber)
|
||||||
|
{
|
||||||
|
this(detail, sourceName, lineNumber, null, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an exception with the specified detail message.
|
* Create an exception with the specified detail message.
|
||||||
*
|
*
|
||||||
|
|
|
@ -73,9 +73,9 @@ public class WrappedException extends EvaluatorException
|
||||||
*
|
*
|
||||||
* @param exception the exception to wrap
|
* @param exception the exception to wrap
|
||||||
*/
|
*/
|
||||||
public WrappedException(Throwable exception)
|
WrappedException(Throwable exception, String sourceName, int lineNumber)
|
||||||
{
|
{
|
||||||
super(exception.getMessage());
|
super("Wrapped "+exception.toString(), sourceName, lineNumber);
|
||||||
this.exception = exception;
|
this.exception = exception;
|
||||||
if (initCauseMethod != null) {
|
if (initCauseMethod != null) {
|
||||||
try {
|
try {
|
||||||
|
@ -86,26 +86,6 @@ public class WrappedException extends EvaluatorException
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the message for the exception.
|
|
||||||
*
|
|
||||||
* Delegates to the wrapped exception.
|
|
||||||
*/
|
|
||||||
public String getMessage()
|
|
||||||
{
|
|
||||||
return "WrappedException of " + exception.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the localized message.
|
|
||||||
*
|
|
||||||
* Delegates to the wrapped exception.
|
|
||||||
*/
|
|
||||||
public String getLocalizedMessage()
|
|
||||||
{
|
|
||||||
return "WrappedException of " + exception.getLocalizedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the wrapped exception.
|
* Get the wrapped exception.
|
||||||
*
|
*
|
||||||
|
|
|
@ -132,7 +132,8 @@ public class ToolErrorReporter implements ErrorReporter {
|
||||||
int lineOffset)
|
int lineOffset)
|
||||||
{
|
{
|
||||||
error(message, sourceName, line, lineSource, lineOffset);
|
error(message, sourceName, line, lineSource, lineOffset);
|
||||||
return new EvaluatorException(message);
|
return new EvaluatorException(message, sourceName, line,
|
||||||
|
lineSource, lineOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasReportedError() {
|
public boolean hasReportedError() {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче