gì
Log.wtf
làm là viết một ngoại lệ và dấu vết ngăn xếp của nó trong nhật ký, và chỉ có vậy. Nó không bắt và ném ngoại lệ. Vì vậy,
Sự khác biệt là ngoại lệ được ghi nhật ký hay không. Ngoại lệ vẫn chưa được giải quyết.
Nó không ảnh hưởng đến báo cáo sự cố.
Nếu bạn muốn đăng nhập, hãy tiếp tục. Nhưng bạn sẽ muốn tiếp tục ném IllegalStateException
.
EDIT
tôi đã cố gắng gỡ lỗi và bước vào Log.wtf
nhưng không có may mắn.
Điều tôi đã tìm thấy là khá nhiều nội dung được trả lời trong câu hỏi được liên kết. Có vẻ như trong "xử lý thất bại mặc định khủng khiếp" Log.wtf
tạo ra một ngoại lệ nội bộ (TerribleFailure
) kết thúc tốt đẹp bất kỳ ngoại lệ nhất định nào. Sau đó, nó gọi RuntimeInit.wtf()
. Javadoc của nó nói:
Báo cáo lỗi nghiêm trọng trong quy trình hiện tại. Có thể hoặc không thể gây ra quá trình chấm dứt (phụ thuộc vào cài đặt hệ thống).
Tôi đoán hành vi của Log.wtf
tùy thuộc vào nhà sản xuất thiết bị. Sony C6503 của tôi dường như không gây bất kỳ ngoại lệ hoặc giết quá trình.
Một số tài liệu tham khảo mã nguồn mở:
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/util/Log.java
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/com/android/internal/os/RuntimeInit.java
lẽ Log.wtf không ném ngoại lệ nhưng nó không chấm dứt các ứng dụng, ít nhất là thỉnh thoảng. Nếu nó không chấm dứt bằng cách ném ngoại lệ, thì điều đó sẽ ảnh hưởng đến báo cáo sự cố, nếu tôi nhận được báo cáo nào cả. – cambunctious
@cambunctious yes, có thể vậy. Từ mã i liên kết, internals Android xử lý ngoại lệ và giết chết quá trình trong một số trường hợp – nandsito
Có thể cho một thực hiện Log.wtf để chấm dứt các ứng dụng mà không bị rơi và gây ra một báo cáo tai nạn? – cambunctious