2016-09-03 5 views
1

우리는 ScriptEngine.eval (String)과 eval (String)을 사용하는 자바 스크립트에서 "eval"을 많이 사용하는 Rhino Javascript (JDK7 해석 모드)를 사용합니다. 우리는 eval에 대한 보안 문제가있을 수 있다는 것을 알고 있지만 ... 그게 ...Rhino Javascript - 예외 스택 트레이스의 문자열 소스에 레이블을 지정하는 방법

예외가 발생하면 결국 Java에 의해 catch되고 java 스택 추적은 다음과 같은 내용을 출력합니다. (# 7) in at line number 7.

소스의 이름은 알 수 없습니다. 우리는 방금 eval에 문자열을주었습니다.

그러나 주어진 평가에 레이블을 첨부하여 스택 추적에 더 나은 힌트를 제공 할 수 있습니까? 뭔가 같은 : 예외가 슬로우 될 때 같은 것을 말할 것이다 그래야

String jsCode = "va z=x+y"..... 
eval(jsCode, "label1"); 

은 : 행 번호에서 7

에서 (Label1을)를이 디버그 쉽게하고 문제의 뿌리를 찾을 것 . JS의 평가 함수에

답변

0

크레이트 래퍼 :

function evalWithLabel(js, label) { 
    try { 
     return eval(js); 
    } catch(err) { 
     throw label + ': ' + err; 
    } 
}