Tôi đang đọc là nguồn gốc của XWalkUIClientInternal và tôi chạy vào đoạn mã sau:khẳng định (sai) so với 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;
Tôi chưa bao giờ thực sự nhìn thấy kỹ thuật này cũng không thực sự nghĩ về nó trước đây, nhưng tôi đoán này về cơ bản có nghĩa là "đây là unreachable mã và không nên xảy ra bao giờ ", và sụp đổ các ứng dụng không có vấn đề gì. Mặc dù kỹ thuật bạn có thể làm điều đó với một Throwable, miễn là nó không bị bắt.
Vì vậy, câu hỏi của tôi là, cái nào tốt hơn và tại sao, assert(false)
hoặc ném RuntimeException
hoặc có thể là Error
?
Và nếu bạn muốn ném một cái gì đó, bạn sẽ ném một 'RuntimeException' để thậm chí không' bắt (Exception e) 'sẽ bắt nó, hoặc một phân lớp của' Lỗi'? – EpicPandaForce
Bạn có thể ném một 'AssertionError', đó có lẽ là thích hợp nhất. Tôi đã chỉnh sửa câu trả lời của mình cho phù hợp. – 5gon12eder
Vâng, bạn nói đúng, điều đó dường như là cách tiếp cận tốt nhất. Nó có nhiều thông tin hơn là 'Assertion failed: false', và không bị bắt bởi một nhánh' catch (Exception e) '. – EpicPandaForce