Ich habe einen Code, den ich mit eval()
Funktion von JavaScript
ausführen muss (Wenn Sie diskutieren möchten, ob es in Ordnung ist oder nicht eval()
Funktion verwenden bitte Informationen hinzufügen hier: Why is using the JavaScript eval function a bad idea? aber konzentriere dich nicht hier drauf).Try-catch nach Versuch Versuch einer anderen, die ohne Ausnahmen funktioniert
Nach einigem Code mit eval()
Funktion ausgeführt wird, und wenn es keine Ausnahme auf dem Block try-catch
gibt hat, wird dieser Code ändern und ich werde wieder eval()
Funktion in einem anderen try-catch
Block auszuführen habe.
Die Probleme kommt, dass, wenn ich ein try-catch
Block übereinander legen, werden sie gemeinsam ausgeführt werden und der Code wird nicht sauber sein, so dass die eval()
Funktion wird zweimal ausgeführt gehen werden. Wie folgt aus:
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);
}
Ich sah auch, dass es eine finally
Aussage ist, aber es wird unabhängig davon ausgeführt werden, wenn der try-catch-Block eine Ausnahme gemacht hat oder nicht so ist es für mich nicht sinnvoll.
Was ich denke,
Ich denke, dass ich den zweiten try-catch
Block nach dem Löschen des Codes umfassen kann, aber ich weiß nicht, ob es eine gute Übung sein würde, weil es in einer anderen Funktion ist und der Code Innerhalb dieser Funktion kann auch eine Ausnahme generiert werden.
Meine Frage
Kann ich einen try-catch
Block nur ausgeführt werden, wenn der erste try-catch
Block ohne Ausnahmen gearbeitet hat?
EDIT: Ich habe meinen Code bearbeitet, weil ich vergaß, dass in meinem zweiten try-catch
Ich hatte auch eine Animation.
Vielen Dank im Voraus!
Setzen Sie die gesamte zweite "try..catch" in Ihrem "fertig" Callback ...!? – deceze
@deceze aber es wird nicht eine schlechte Praxis sein, wie ich es vorher gesagt habe? Weil die 'checkAnimation' Funktion auch eine Ausnahme geben könnte. –
Alles, was in dem 'Fertig'-Callback ist, wird nicht von Ihrem ersten' Versuch..Catch'-Block behandelt! Weil es asynchron ausgeführt wird. Sie müssen in diesem Callback einen völlig neuen, unabhängigen "try..catch" -Block einrichten. – deceze