- Tham gia
- 12/07/2016
- Bài viết
- 9,983
Vâng stacktrace, bình thường thì những bạn mới code sẽ để ý cái này, nên trước khi đăng 1 bài hỏi về lỗi thì nên đọc cái này trước.
Lưu ý: Không phải là thằng nào cũng phải biết code để hiểu cái này, những ai dùng plugin cũng có thể đọc để giúp mấy thím làm plugin
Mình sẽ sub cái bài viết này từ Bukkit nhé
Stacktrace là gì?
Đơn giản, nó là cái dòng lỗi bù lù bù lòa mà mấy bạn không hiểu được ý
Cụ thể nó như thế này:
Khó đọc thế, làm sao sửa?
Chắc bạn nào cũng nói vậy thôi, vì nhìn đống dòng đấy thì ko hiểu gì được, nah dễ nhìn lắm, lấy ví dụ từ cái stacktrace trên nhé:
Đã có 2 cái dòng chữ in đậm:
1. Dòng đầu ghi NullPointerException, là 1 lỗi xảy ra khi có gì bị null là nó sẽ báo (tức là không có giá trị đi kèm), khó hình dung cho mấy bạn code đúng không, nhìn nhé.
Hay như thế này
Nói chung, khi có 1 biến null tương đương với việc nó không được gán 1 giá trị.
2. Dòng thứ 2 ghi nơi xảy ra lỗi, chính xác là dòng có lỗi đấy và tên class nơi xảy ra lỗi
Đễ fix thì hãy phân tích cái dòng lênh đó ra, như 2 dòng code ví dụ trên, mình sẽ compile lại plugin với dòng code như thế này
Khi đó, cái bảng đen (hay console) sẽ hiện ra như thế này:
Vậy thì mình biết: "À, item bị null, phải gán giá trị cho nó"
Và code sau khi fix sẽ như thế này:
Nói chung thì trong đống dòng đấy, bạn sẽ tìm thấy được 2 thứ
1. Tên lỗi
2. Vị trị lỗi
Thế thôi, và viếc sửa sẽ nằm trong khả năng của ban, piece of cake.
Lưu ý: Không phải là thằng nào cũng phải biết code để hiểu cái này, những ai dùng plugin cũng có thể đọc để giúp mấy thím làm plugin
Mình sẽ sub cái bài viết này từ Bukkit nhé
Stacktrace là gì?
Đơn giản, nó là cái dòng lỗi bù lù bù lòa mà mấy bạn không hiểu được ý
Cụ thể nó như thế này:
Khó đọc thế, làm sao sửa?
Chắc bạn nào cũng nói vậy thôi, vì nhìn đống dòng đấy thì ko hiểu gì được, nah dễ nhìn lắm, lấy ví dụ từ cái stacktrace trên nhé:
Đã có 2 cái dòng chữ in đậm:
1. Dòng đầu ghi NullPointerException, là 1 lỗi xảy ra khi có gì bị null là nó sẽ báo (tức là không có giá trị đi kèm), khó hình dung cho mấy bạn code đúng không, nhìn nhé.
PHP:
ItemStack item = null;
//Dòng dưới sẽ ném NullPointerException do item giá trị là null
ItemMeta meta = item.getItemMeta();
PHP:
ItemStack item;
//Dòng dưới sẽ ném NullPointerException do item không có giá trị được gán
ItemMeta meta = item.getItemMeta();
Nói chung, khi có 1 biến null tương đương với việc nó không được gán 1 giá trị.
2. Dòng thứ 2 ghi nơi xảy ra lỗi, chính xác là dòng có lỗi đấy và tên class nơi xảy ra lỗi
Đễ fix thì hãy phân tích cái dòng lênh đó ra, như 2 dòng code ví dụ trên, mình sẽ compile lại plugin với dòng code như thế này
PHP:
ItemStack item;
System.out.println(item);
//Dòng dưới sẽ ném NullPointerException do item không có giá trị được gán
ItemMeta meta = item.getItemMeta();
Khi đó, cái bảng đen (hay console) sẽ hiện ra như thế này:
Mã:
null
Vậy thì mình biết: "À, item bị null, phải gán giá trị cho nó"
Và code sau khi fix sẽ như thế này:
PHP:
ItemStack item = new ItemStack(Material.DIAMOND_PICKAXE);
//Không còn lỗi xảy ra nữa, vì Item bây giờ đã có giá trị
ItemMeta meta = item.getItemMeta();
Nói chung thì trong đống dòng đấy, bạn sẽ tìm thấy được 2 thứ
1. Tên lỗi
2. Vị trị lỗi
Thế thôi, và viếc sửa sẽ nằm trong khả năng của ban, piece of cake.
Sửa lần cuối:







(((((((( vào codeanywhere học không có lí thuyết cơ bản nhìn éo hỉu gì 
