Có tính năng nào sẽ tự động phá vỡ gỡ lỗi trong lần xuất hiện ngoại lệ đầu tiên không?
Vì vậy, chúng tôi
- bắt đầu ứng dụng
- làm một cái gì đó ném ngoại lệ
- IntelliJ xuất hiện dòng tô sáng nơi xảy ra ngoại lệ.
Có tính năng nào sẽ tự động phá vỡ gỡ lỗi trong lần xuất hiện ngoại lệ đầu tiên không?
Vì vậy, chúng tôi
Câu trả lời:
Chạy | Xem điểm dừng | Điểm dừng ngoại lệ
Một cách nhanh chóng để bật lên hộp thoại là nhấn Ctrl+ SHIFT+ F8(Trên máy Mac: Cmd+ SHIFT+ F8), sau đó nhấp vào tab điểm dừng ngoại lệ. Nếu đó là tab cuối cùng bạn đang xem, nó vẫn sẽ được chọn, giúp bạn dễ dàng phá vỡ các ngoại lệ trên và tắt.
Điều này sẽ khiến IntelliJ phá vỡ tại điểm trong mã (hoặc mã thư viện) nơi ngoại lệ được nêu ra. Cụ thể, bạn có được 'cơ hội đầu tiên' khi xử lý ngoại lệ, trước khi ngăn xếp được tìm kiếm các khối bắt / cuối cùng để thực thi.
MIPO: Java có xu hướng ném rất nhiều ngoại lệ trong nội bộ khi tải các lớp, do đó, việc phá vỡ tất cả các ngoại lệ này có thể trở nên khá tẻ nhạt. Tin tốt là bạn có thể loại trừ một số loại ngoại lệ nhất định bằng cách sử dụng trường điều kiện .
Ví dụ:
!(this instanceof java.lang.ClassNotFoundException)
Bạn có thể xâu chuỗi nhiều điều kiện như vậy cùng với &&
.
Trong IntelliJ IDEA 14 đi đến:
Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"
Nếu bạn không bỏ chọn, Caught Exceptions
việc thực thi sẽ bị dừng mỗi lần Java Framework
ném ngoại lệ bên trong.
Trong các phiên bản mới hơn trên intellij trong phần Run > View Breakpoint .
Sau đó kiểm tra Điểm dừng ngoại lệ Java -> Bất kỳ ngoại lệ nào .
Một cách tốt để gỡ lỗi các ngoại lệ là sử dụng gói ứng dụng chính của bạn và thẻ đại diện .*
. Bằng cách này, bạn bỏ qua tất cả các ngoại lệ của các thư viện khác, vì hầu hết các lần bạn đang tìm kiếm các ngoại lệ được ném bởi ứng dụng của bạn chứ không phải bởi bất kỳ thư viện nào khác (có thể là rất nhiều ngoại lệ).
Như một ví dụ cho thấy trong hình ảnh tôi sử dụng com.gs.mercury.*
để phá vỡ mỗi khi ứng dụng ném ngoại lệ. Nếu bạn sử dụng ngoại lệ cho những gì họ làm (để xử lý các trường hợp ngoại lệ và không xử lý luồng tình huống thông thường), bạn sẽ chỉ dừng lại khi bạn đạt được ngoại lệ mong muốn gần như mọi lúc.
PD. câu trả lời được thêm vào chỉ để chỉ ra bộ lọc lớp Catch khá hữu ích .