Theo dõi ngăn xếp Java là gì?
Mặc dù thoạt nhìn có vẻ khó hiểu, nhưng dấu vết ngăn xếp có thể nắm giữ các chìa khóa để khắc phục sự cố nhanh chóng, hiệu quả.
Theo dõi ngăn xếp (hoặc theo dõi lại) là đầu ra hiển thị ngăn xếp phương pháp của ứng dụng của bạn. Thông thường, bạn sẽ thấy một mã trên thiết bị đầu cuối của mình khi ứng dụng của bạn gặp lỗi.
Như tên cho thấy, một cấu trúc dữ liệu ngăn xếp lưu trữ các phương thức trong một dấu vết ngăn xếp. Phương thức bắt đầu thực thi chương trình ở cuối ngăn xếp trong khi phương thức tạo ra dấu vết ngăn xếp ở trên cùng.
Dấu vết ngăn xếp có thể rất hữu ích khi bạn đang gỡ lỗi mã của mình.
Mục Lục
Tại sao Dấu vết ngăn xếp lại quan trọng?
Dấu vết ngăn xếp là một công cụ gỡ lỗi quan trọng. Nó cung cấp cho bạn thông tin chi tiết như loại lỗi, phương pháp xảy ra lỗi, dòng trong mã của bạn nơi nó xảy ra và đường dẫn tệp.
Đối với một lập trình viên dày dạn kinh nghiệm, thông tin này là một mỏ vàng để hiểu chính xác điều gì đã xảy ra và ở đâu.
Là một lập trình viên, bạn cũng có thể yêu cầu chương trình của mình tạo một dấu vết ngăn xếp theo yêu cầu. Điều này có thể đặc biệt hữu ích cho việc bảo trì mã và khắc phục sự cố.
Làm thế nào để xuất ra một dấu vết ngăn xếp
Tùy thuộc vào phiên bản trình biên dịch của bạn, rất có thể bạn sẽ nhận được một bản ghi lại có thể đọc được. Theo dõi có thể đọc được cung cấp văn bản thân thiện với người dùng về lỗi, không giống như truy xuất thông thường. Điều này đặc biệt đúng đối với các trình biên dịch mới. Do đó, cách tốt nhất để tìm hiểu về dấu vết ngăn xếp là tự tạo ra một dấu vết.
Bạn có thể tạo ra một dấu vết ngăn xếp mà không có bất kỳ lỗi nào trong mã của bạn. Để làm như vậy, chỉ cần sử dụng dumpStack phương pháp của java.lang.Thread lớp. Nó sẽ hiển thị tất cả các phương thức đã được gọi, ngay từ phương thức gọi dumpStack. Phương thức gọi sẽ là phương thức nằm trên cùng của cấu trúc dữ liệu ngăn xếp.
Đây là một chương trình ví dụ tạo ra một dấu vết ngăn xếp một cách rõ ràng:
class StackTraceDemo {
public static void main(String[] args) {
day();
}static void day() {
hours();
}
static void hours() {
minutes();
}
static void minutes() {
int a = 24 * 60;
System.out.println(a + " minutes in a day");
Thread.dumpStack();
}
}
Đầu ra:
1440 minutes in a day
java.lang.Exception: Stack trace
at java.base/java.lang.Thread.dumpStack(Thread.java:138)
at StackTraceDemo.minutes(StackTraceDemo.java:17)
at StackTraceDemo.hours(StackTraceDemo.java:11)
at StackTraceDemo.day(StackTraceDemo.java:7)
at StackTraceDemo.main(StackTraceDemo.java:3)
Trong kết quả đầu ra này, bạn có thể quan sát rằng truy xuất cho thấy chương trình đã gọi từng phương thức Java như thế nào và ở số dòng nào trong mã nguồn của nó. Phương thức tạo ra dấu vết ngăn xếp là phương thức được hiển thị ở trên cùng của ngăn xếp. Phương thức đã gọi phương thức đó nằm ở dòng bên dưới nó, v.v.
Vượt ra khỏi dấu vết ngăn xếp
Theo mặc định, khi chương trình Java của bạn gặp lỗi, nó sẽ tạm dừng và hiển thị dấu vết ngăn xếp. Tuy nhiên, bạn có thể chọn xử lý các lỗi này một cách khéo léo thay vì hiển thị các thông báo có thể gây nhầm lẫn cho người dùng cuối.
Bạn có thể cải thiện khả năng xử lý lỗi của chương trình bằng cách sử dụng khối try … catch () để nắm bắt các trường hợp ngoại lệ. Điều quan trọng là phải xem xét — và hiểu — các loại lỗi khác nhau mà chương trình của bạn có thể gặp phải.