У меня есть код, который я должен выполнить с eval()
функцией JavaScript
(Если вы хотите обсудить, нормально ли это или нет, используйте функцию eval()
, пожалуйста, добавьте информацию здесь: Why is using the JavaScript eval function a bad idea?, но не сосредотачивайтесь на нем здесь).Try-catch после утверждения try другого, который работал без исключений
После некоторого кода она выполняется с eval()
функции, и если оно не дает каких-либо исключений на try-catch
блоке, этот код будет меняться, и мне придется снова eval()
функции выполняются в другом try-catch
блоке.
Проблемы возникают, если я положил один блок try-catch
над другим, они будут выполнены вместе, и код не будет чистым, поэтому функция eval()
будет выполнена дважды. Как это:
var code = some code here;
try{
eval(code); //Here the code has divs animations
$("#animate").promise().done(function(){
checkAnimation();
//Clear code
});
}catch(error){
console.log(error);
}
try{
eval(code); //Animations with the same div
$("#animate").promise().done(function(){
checkAnimation();
});
}catch(error){
console.log(error);
}
Я также видел, что есть finally
утверждение, но оно будет выполняться независимо от того, если блок примерочной задвижки сделал исключение или нет, так что не полезно для меня.
Я думаю
Я думаю, что я могу включить второй try-catch
блок после очистки кода, но я не знаю, если это будет хорошая практика, потому что он находится внутри другой функции и код внутри этой функции также может генерироваться исключение.
Мой вопрос
Могу ли я выполнить try-catch
блок только тогда, когда первый try-catch
блок работал без исключений?
EDIT: Я отредактировал свой код, потому что забыл положить его во второй try-catch
У меня также была анимация.
Заранее благодарен!
Поместите весь второй 'try..catch' внутри вашего' done' callback ...!? – deceze
@deceze, но это будет плохой практикой, как я уже говорил? Потому что функция checkAnimation также может дать исключение. –
Все, что находится внутри обратного вызова 'done', не будет обрабатываться вашим первым блоком' try..catch'! Потому что он выполняется асинхронно. В любом случае вам придется создать совершенно новый независимый блок 'try..catch' внутри этого обратного вызова. – deceze