Tôi có một công cụ, tương tự như cách để JSFiddle, cho phép tôi tự động nhập vào javascript và chạy nó trên một trang. Mã có thể là nhiều dòng và thường sẽ là.mã tải động và nhận số dòng lỗi phân tích cú pháp
Thật không may nếu có một ngoại lệ trong mã tôi nhập vào, tôi không thể nhận được số dòng của ngoại lệ nếu tôi sử dụng eval() để chạy mã.
Tôi tìm thấy một giải pháp một phần, đó là thay vì sử dụng
try{
eval(code);
}
catch(e) {
processException(e);
}
để thay làm một cái gì đó như thế này:
var s = document.createElement('script');
s.appendChild(document.createTextNode(
"try{\n" +
code +
"}catch(e){processException(e)}"));
document.body.appendChild(s);
Bây giờ, nếu mã ném một ngoại lệ, và tôi nhìn vào stack trace (trong hàm processException() của tôi) tôi có thể nhận được một số dòng của ngoại lệ (trong firefox và chrome, anyway).
Đó là tất cả tốt và tốt nếu nó thực sự là một ngoại lệ thời gian chạy, chẳng hạn như một biến không được xác định. Vấn đề là nếu có một lỗi phân tích cú pháp/lỗi cú pháp, chẳng hạn như parens không khớp hoặc tương tự. Tôi không có gì cả.
Có cách giải quyết nào khác cho điều này, hoạt động trên firefox và chrome, ở mức tối thiểu? Đánh giá trong eval trong thẻ script trong đối tượng Function? Tôi đang cố gắng tất cả mọi thứ và không tìm thấy bất cứ điều gì hoạt động.
Đây là một nguyên tắc thực sự hữu ích. Cảm ơn. – SystemParadox