Trình xây dựng EvalError[]
tạo ra một thể hiện mới.EvalError[]
constructor creates a new EvalError
instance.Cú pháp
new EvalError[]
new EvalError[message]
new EvalError[message, options]
new EvalError[message, fileName]
new EvalError[message, fileName, lineNumber]
EvalError[]
EvalError[message]
EvalError[message, options]
EvalError[message, fileName]
EvalError[message, fileName, lineNumber]
Lưu ý: EvalError[]
có thể được gọi có hoặc không có
1. Cả hai đều tạo ra một thể hiện ____99 mới. try {
throw new EvalError["Hello", "someFile.js", 10];
} catch [e] {
console.log[e instanceof EvalError]; // true
console.log[e.message]; // "Hello"
console.log[e.name]; // "EvalError"
console.log[e.fileName]; // "someFile.js"
console.log[e.lineNumber]; // 10
console.log[e.columnNumber]; // 0
console.log[e.stack]; // "@Scratchpad/2:2:9\n"
}
EvalError[]
can be called with or without
try {
throw new EvalError["Hello", "someFile.js", 10];
} catch [e] {
console.log[e instanceof EvalError]; // true
console.log[e.message]; // "Hello"
console.log[e.name]; // "EvalError"
console.log[e.fileName]; // "someFile.js"
console.log[e.lineNumber]; // 10
console.log[e.columnNumber]; // 0
console.log[e.stack]; // "@Scratchpad/2:2:9\n"
}
1. Both create a new EvalError
instance.Thông số
try {
throw new EvalError["Hello", "someFile.js", 10];
} catch [e] {
console.log[e instanceof EvalError]; // true
console.log[e.message]; // "Hello"
console.log[e.name]; // "EvalError"
console.log[e.fileName]; // "someFile.js"
console.log[e.lineNumber]; // 10
console.log[e.columnNumber]; // 0
console.log[e.stack]; // "@Scratchpad/2:2:9\n"
}
3 Tùy chọnOptionalMô tả có thể đọc được của con người về lỗi.
try {
throw new EvalError["Hello", "someFile.js", 10];
} catch [e] {
console.log[e instanceof EvalError]; // true
console.log[e.message]; // "Hello"
console.log[e.name]; // "EvalError"
console.log[e.fileName]; // "someFile.js"
console.log[e.lineNumber]; // 10
console.log[e.columnNumber]; // 0
console.log[e.stack]; // "@Scratchpad/2:2:9\n"
}
4 Tùy chọnOptionalMột đối tượng có các thuộc tính sau:
try {
throw new EvalError["Hello", "someFile.js", 10];
} catch [e] {
console.log[e instanceof EvalError]; // true
console.log[e.message]; // "Hello"
console.log[e.name]; // "EvalError"
console.log[e.fileName]; // "someFile.js"
console.log[e.lineNumber]; // 10
console.log[e.columnNumber]; // 0
console.log[e.stack]; // "@Scratchpad/2:2:9\n"
}
5 Tùy chọnOptionalMột thuộc tính chỉ ra nguyên nhân cụ thể của lỗi. Khi bắt và ném lại lỗi với thông báo lỗi cụ thể hoặc hữu ích hơn, thuộc tính này có thể được sử dụng để truyền lỗi ban đầu.
try {
throw new EvalError["Hello", "someFile.js", 10];
} catch [e] {
console.log[e instanceof EvalError]; // true
console.log[e.message]; // "Hello"
console.log[e.name]; // "EvalError"
console.log[e.fileName]; // "someFile.js"
console.log[e.lineNumber]; // 10
console.log[e.columnNumber]; // 0
console.log[e.stack]; // "@Scratchpad/2:2:9\n"
}
6 tùy chọn-tiêu chuẩnOptional
Non-standardTên của tệp chứa mã gây ra ngoại lệ
try {
throw new EvalError["Hello", "someFile.js", 10];
} catch [e] {
console.log[e instanceof EvalError]; // true
console.log[e.message]; // "Hello"
console.log[e.name]; // "EvalError"
console.log[e.fileName]; // "someFile.js"
console.log[e.lineNumber]; // 10
console.log[e.columnNumber]; // 0
console.log[e.stack]; // "@Scratchpad/2:2:9\n"
}
7 tùy chọn-tiêu chuẩnOptional Non-standardSố dòng của mã gây ra ngoại lệ
Ví dụ
EvalError
không được sử dụng trong thông số kỹ thuật ECMAScript hiện tại và do đó sẽ không bị ném bởi thời gian chạy. Tuy nhiên, bản thân đối tượng vẫn dành cho khả năng tương thích ngược với các phiên bản trước của thông số kỹ thuật.
Tạo một EvalError
try {
throw new EvalError["Hello", "someFile.js", 10];
} catch [e] {
console.log[e instanceof EvalError]; // true
console.log[e.message]; // "Hello"
console.log[e.name]; // "EvalError"
console.log[e.fileName]; // "someFile.js"
console.log[e.lineNumber]; // 10
console.log[e.columnNumber]; // 0
console.log[e.stack]; // "@Scratchpad/2:2:9\n"
}
Thông số kỹ thuật
Đặc tả ngôn ngữ Ecmascript # Sec-NativeRror-Construction # sec-nativeerror-constructors |
Tính tương thích của trình duyệt web
Bảng BCD chỉ tải trong trình duyệt
Xem thêm
Đã trả lời ngày 26 tháng 7 năm 2020 lúc 16:00
BalajibalajiFeb 7, 2011 at 15:51
7.9195 Huy hiệu vàng36 Huy hiệu bạc44 Huy hiệu đồngJesus Ramos
22.7K10 Huy hiệu vàng55 Huy hiệu bạc88 Huy hiệu Đồng10 gold badges55 silver badges88 bronze badges
Bạn có thể kiểm tra xem liệu lỗi có thực sự là một cú pháp hay không.
try {
eval[code];
} catch [e] {
if [e instanceof SyntaxError] {
alert[e.message];
}
}
Đã trả lời ngày 7 tháng 2 năm 2011 lúc 15:56Feb 7, 2011 at 15:56
ChaopandionchaospandionChaosPandion
76.4K18 Huy hiệu vàng117 Huy hiệu bạc155 Huy hiệu đồng18 gold badges117 silver badges155 bronze badges
0
Khi sử dụng thử để bắt để bắt một loại lỗi cụ thể, người ta nên đảm bảo rằng các loại ngoại lệ khác không bị triệt tiêu. Mặt khác, nếu mã được đánh giá ném một loại ngoại lệ khác, nó có thể biến mất và gây ra hành vi bất ngờ của mã.
Tôi sẽ đề nghị viết mã như thế này:
try {
eval[code];
} catch [e] {
if [e instanceof SyntaxError] {
alert[e.message];
} else {
throw e;
}
}
Xin lưu ý phần "khác".
Clonkex
3.1766 huy hiệu vàng38 Huy hiệu bạc52 Huy hiệu đồng6 gold badges38 silver badges52 bronze badges
Đã trả lời ngày 13 tháng 10 năm 2014 lúc 19:01Oct 13, 2014 at 19:01
2
Theo tài liệu Mozilla cho
try {
throw new EvalError["Hello", "someFile.js", 10];
} catch [e] {
console.log[e instanceof EvalError]; // true
console.log[e.message]; // "Hello"
console.log[e.name]; // "EvalError"
console.log[e.fileName]; // "someFile.js"
console.log[e.lineNumber]; // 10
console.log[e.columnNumber]; // 0
console.log[e.stack]; // "@Scratchpad/2:2:9\n"
}
9:Đánh giá trả về giá trị của biểu thức cuối cùng được đánh giá.
Vì vậy, tôi nghĩ rằng bạn có thể hết may mắn. Tài liệu tương tự này cũng khuyến nghị không sử dụng
try {
throw new EvalError["Hello", "someFile.js", 10];
} catch [e] {
console.log[e instanceof EvalError]; // true
console.log[e.message]; // "Hello"
console.log[e.name]; // "EvalError"
console.log[e.fileName]; // "someFile.js"
console.log[e.lineNumber]; // 10
console.log[e.columnNumber]; // 0
console.log[e.stack]; // "@Scratchpad/2:2:9\n"
}
9:Eval [] là một chức năng nguy hiểm, thực thi mã được thông qua với các đặc quyền của người gọi. Nếu bạn chạy eval [] với một chuỗi có thể bị ảnh hưởng bởi một bên độc hại, cuối cùng bạn có thể chạy mã độc trên máy của người dùng với các quyền của trang web / tiện ích mở rộng của bạn. Quan trọng hơn, mã bên thứ ba có thể thấy phạm vi mà eval [] được gọi, điều này có thể dẫn đến các cuộc tấn công có thể theo cách mà hàm tương tự không dễ bị ảnh hưởng.
Vì vậy, bất kể, xin vui lòng lưu ý về các rủi ro trước khi sử dụng chức năng này.
Đã trả lời ngày 7 tháng 2 năm 2011 lúc 15:56Feb 7, 2011 at 15:56
Justin Ethierjustin EthierJustin Ethier
129K51 Huy hiệu vàng226 Huy hiệu bạc282 Huy hiệu Đồng51 gold badges226 silver badges282 bronze badges
1
Bạn có thể sử dụng JSLINT có chứa trình phân tích cú pháp JavaScript được viết bằng JavaScript. Nó sẽ cung cấp cho bạn rất nhiều thông tin về mã của bạn, nó có thể được cấu hình để thoải mái hơn hay không, v.v.
bru02
3602 Huy hiệu bạc10 Huy hiệu đồng2 silver badges10 bronze badges
Đã trả lời ngày 7 tháng 2 năm 2011 lúc 16:05Feb 7, 2011 at 16:05
Pablo Grisafipablo GrisafiPablo Grisafi
5.0291 Huy hiệu vàng18 Huy hiệu bạc29 Huy hiệu đồng1 gold badge18 silver badges29 bronze badges
0
Để tiếp tục sử dụng mã sau khi xác thực, tôi sử dụng ví dụ sau:
var validCode = 1;
try {
eval[ jsCode ]; /* Code test */
} catch [e] {
if [e instanceof SyntaxError] {
validCode = 0;
console.warn[e.message];
}
} finally {
if[validCode]{
"do some magic"
}
}
Đã trả lời ngày 5 tháng 4 năm 2020 lúc 1:03Apr 5, 2020 at 1:03
SeanseanSean
374 huy hiệu đồng4 bronze badges
Mã dưới đây được đăng bởi Go-Oleg nhờ anh ấy
Mã này xác thực cú pháp chính xác nếu không có lỗi
Lưu ý: Mã không phải là lỗi thời gian chạy Vaildate vì nó sử dụng trình phân tích cú pháp AST để phân tích cú pháp chính xác.
Để cài đặt
npm install esprima --save
code:
var esprima = require['esprima'];
var userStringToTest = 'var a = 50;';
var isValid = isValidJs[userStringToTest];
if[isValid] {
alert['its validated!'];
}
else {
console.log['its NOT valid syntax!'];
}
function isValidJs[testString] {
var isValid = true;
try {
esprima.parse[testString];
}
catch[e] {
isValid = false;
}
return isValid;
}
Đã trả lời ngày 26 tháng 7 năm 2020 lúc 16:00Jul 26, 2020 at 16:00
BalajibalajiBalaji
7.9195 Huy hiệu vàng36 Huy hiệu bạc44 Huy hiệu đồng5 gold badges36 silver badges44 bronze badges
Đặt giá trị mong muốn của bạn cho B
//b="4+6";
try { eval[b]; }
catch [err] {
if [err instanceof SyntaxError]
document.getElementById['screen'].innerHTML = "Syntax Error";
/*In html make a div and put id "screen" in it for this to work
you can also replace this line with document.write or alert as per your wish*/
}
finally {
document.getElementById['screen'].innerHTML = eval[b]; //outputs answer
}
Đã trả lời ngày 24 tháng 2 năm 2021 lúc 6:09Feb 24, 2021 at 6:09