Оператор javascript try catch не работает в моем коде

  1. Я получил сообщение об ошибке «Uncaught SyntaxError: Invalid or неожиданный токен».
  2. И попробуйте поймать с помощью «попробовать ~ поймать», но это не работает.

    function a(){
      try{
       var img1 = "=="";  <#-- it occurs error -->
      }catch (e) {
        console.log("image error:" + e.message);
      }
    }
    

person jumi lee    schedule 26.06.2018    source источник
comment
Это ваш точный код? Также вы не можете поймать синтаксические ошибки (по крайней мере, вне eval).   -  person TiiJ7    schedule 26.06.2018
comment
У меня возникает ошибка Намеренно для проверки оператора catch. Но он не может поймать ошибку.   -  person jumi lee    schedule 26.06.2018
comment
Синтаксическая ошибка AFAIK не является исключением   -  person Terry Wei    schedule 26.06.2018
comment
Синтаксические ошибки проверяются во время синтаксического анализа, try .. catch выполняется во время выполнения, чего никогда не произойдет, поскольку синтаксическая ошибка прервала выполнение сценария.   -  person Teemu    schedule 26.06.2018
comment
Как уже упоминалось, синтаксическая ошибка не будет поймана, вместо этого попробуйте это javascriptkit.com/javatutors/error.shtml   -  person Isaac    schedule 26.06.2018
comment
Тогда как с этим справиться? На самом деле переменная img1 является строкой расшифровки, но иногда сервер отправляет неверную строку.   -  person jumi lee    schedule 26.06.2018
comment
Сначала (если под вашим контролем) я попытался исправить иногда возникающую неверную информацию на стороне сервера, или, если это невозможно, вы могли бы спросить, как исправить реальную проблему своими руками, а не для взлома почини это.   -  person Teemu    schedule 26.06.2018
comment
Вы должны исправить ошибку, вызванную синтаксической ошибкой. Похоже, вы генерируете этот javascript по коду, верно? вы должны знать, как сделать синтаксис javascript правильным.   -  person Terry Wei    schedule 26.06.2018
comment
возможно, дубликат этого вопроса   -  person Aayush Sharma    schedule 26.06.2018
comment
Возможный дубликат Можно ли обнаруживать синтаксические ошибки в JavaScript?   -  person Aayush Sharma    schedule 26.06.2018
comment
Джуми Ли, пожалуйста, прочтите: Что делать, когда кто-то отвечает на ваш вопрос?   -  person Bharata    schedule 26.06.2018


Ответы (1)


У вас есть синтаксическая ошибка, и вы не можете поймать синтаксическую ошибку.

Эта ошибка проверяется во время синтаксического анализа или проверки вашего кода. Оператор try .. catch выполняется во время выполнения. И из-за этого он не работал.

Если вы оцениваете или анализируете (например, JSON) свой код, вы можете обрабатывать синтаксические ошибки только. Или вы можете создать синтаксическую ошибку следующим образом:

try {
  throw new SyntaxError('Hello', 'someFile.js', 18);
} catch (e) {

  console.log(e.message);  // "Hello"
  console.log(e.name);  // "SyntaxError"
}

Для eval обработанных или самостоятельно созданных синтаксических ошибок:

Синтаксическая ошибка возникает, когда механизм JavaScript обнаруживает токены или порядок токенов, которые не соответствуют синтаксису языка при анализе кода.

Из MDN

Попробуй это:

    function a(){
      try{
       var img1 = "==\"";
       //but you have to put some error here without parsing or validation error of your code.
      }catch (e) {
        console.log("image error:" + e.message);
      }
    }

Хочу порекомендовать вам прочитать:

person Bharata    schedule 26.06.2018