Ich bin die Quelle XWalkUIClientInternal lesen, und ich lief in den folgenden Code ein:assert (false) vs RuntimeException?
switch(type) {
case JAVASCRIPT_ALERT:
return onJsAlert(view, url, message, result);
case JAVASCRIPT_CONFIRM:
return onJsConfirm(view, url, message, result);
case JAVASCRIPT_PROMPT:
return onJsPrompt(view, url, message, defaultValue, result);
case JAVASCRIPT_BEFOREUNLOAD:
// Reuse onJsConfirm to show the dialog.
return onJsConfirm(view, url, message, result);
default:
break;
}
assert(false);
return false;
Ich habe nie wirklich diese Technik noch wirklich darüber gesehen dachte, aber ich denke, das bedeutet im Wesentlichen: „Das ist nicht erreichbar Code und sollte nie passieren ", und crash die App, egal was. Technisch kann man das mit einem Throwable, solange es nicht erwischt wird.
Also meine Frage ist, welche ist besser und warum, assert(false)
oder werfen RuntimeException
, oder vielleicht eine Error
?
Und wenn Sie etwas werfen wollten, würden Sie eine 'RuntimeException' werfen, so dass nicht einmal' catch (Exception e) 'es fangen würde, oder eine Unterklasse von' Error'? – EpicPandaForce
Sie können einen 'AssertionError' werfen, das ist wahrscheinlich am besten geeignet. Ich habe meine Antwort entsprechend bearbeitet. – 5gon12eder
Ja, Sie haben Recht, das scheint der beste Ansatz zu sein. Es ist informativer als nur 'Assertion failed: false' und wird nicht von einem' 'catch (Exception e)' Zweig abgefangen. – EpicPandaForce