• Trong thời gian này, bạn không thể tạo bài mới, đăng comment, hay tạo tài nguyên mới để diễn đàn dọn dẹp nội dung.
    Diễn đàn sẽ sớm mở trở lại, chi tiết hãy theo dõi tại Discord
nahkd123

Java & Plugin Dev Một số lỗi cơ bản

  • Người tạo chủ đề Người tạo chủ đề nahkd123
  • Ngày gửi Ngày gửi

nahkd123

DEVELOPER
try catch được sử dụng để tùy chỉnh tin nhắn khi gặp lỗi. Mặc định là nó sẽ in stack trace ra. Trong một số trường hợp, ví dụ như IOException, thì bạn cần tùy chỉnh để người khác biết được đó là lỗi của họ uwu

Nó đươc viết như sau:
Mã:
try {
    // Code here...
} catch (<Exception j đó> e) {
    // Code here or e.printStackTrace();
}

Nếu đoạn code có nhiều trường hợp thì chúng ta chỉ cần việc thêm catch vào dấu ngoặc nhọn cuối cùng:
Mã:
try {
    Minecraft a = null;
    a.player; // NullPointerException
} catch (NullPointerException e) {
    System.out.println("Null");
} catch (Exception e) {
    System.out.println("Unknown exception");
    e.printStackTrace();
}

1. NullPointerException
Đây là lỗi cơ bản nhất, khi mà 1 biến được trỏ vào vị trí null trên bộ nhớ.
Để tránh lỗi này, bạn thêm null check vào:
Mã:
if (ban.concac != null) {
    ban.concac.say("Ok");
}

2. ConcurrentModificationException
Lỗi này thường là do multithread không hợp lý. VD: Bạn đang thêm xâu "abc" vào ArrayList trong khi thằng khác thêm "xyz" vào mảng đó, như vậy sẽ tạo ra ConcurrentModificationException
Mã:
public static ArrayList<String> publicShit = new ArrayList<String>();

// ---------------- THREAD 1
publicShit.add("abc");

// ---------------- THREAD 2
publicShit.add("xyz");
Cách fix: lock nó lại:
Mã:
// ---------------- THREAD 1
synchronized (publicShit) {publicShit.add("abc");}

// ---------------- THREAD 2
synchronized (publicShit) {publicShit.add("xyz");}

3. IOException
Lỗi này xảy ra khi bạn đang đọc/lưu file mà không thành công.

4. StackOverflowException
Khi mà method của bạn gọi chính nó quá nhiều lần. Đây là ví dụ:
Mã:
public void a() {
    a();
}

5. ClassNotFoundException
Thường xảy ra khi bạn làm ở phiên bản mới xong rồi chạy ở phiên bản cũ.
Cách fix:
- Reflection (lag nát sv dok)
- Tạo interface

6. ClassCastException
Xảy ra khi đối tượng đó ko thừa kế một class nào đó. VD: ConsoleCommandSender ko thừa kế Player
Cách fix: Thêm instanceof check
Mã:
if (sender instanceof Player) {
    Player player = (Player) sender;
    player.damage(69);
} else sender.sendMessage("con cac");

7. Array/StringIndexOutOfBoundsException
Xảy ra khi cố gắng truy cập vào vị trí không có trong mảng/string
VD:
Mã:
ArrayList<String> abc = new ArrayList<String>();
abc.get(0); // ArrayIndexOutOfBoundsException

String owo = "owo";
owo.substring(0, 5); // StringIndexOutOfBoundsException

8. FileNotFoundException
Đúng như cái tên, chỉ xảy ra khi tệp tin không có trong máy.
Cách fix: Kiểm tra trước khi thực hiện
Mã:
if (new File("urmomgay.yml").exists()) {
    // Do something
} else System.out.println("cac");

69. Exception
ko

Sau đây là những lỗi liên quan đến server:
9. OutOfMemoryError
Lỗi thiếu bộ nhớ. Thông thướng server sẽ crash thay vì throw cái lỗi này ra. Để fix, chúng ta chỉ cần cho thêm ram vào là được.

10. InternalError
Lỗi này liên quan đến phiên bản Java của bạn. Để sửa thì bạn cần update java lên là được.

Edit: Thêm một số thứ
 
mà tớ cũng hay bị lỗi console cũng muốn fix cơ :<
 
tớ có 0,0000000001 kiến thức |:< pls chỉ tớ
 
khi tớ nhấn vào file jar thì nó ra 1 đống folder và tệp lạ cơ :)) chả biết decompile như lào
 
khi tớ nhấn vào file jar thì nó ra 1 đống folder và tệp lạ cơ :)) chả biết decompile như lào
Bạn dùng phần mềm decompile (dịch ngược) như JD GUI chẳng hạn, vào phần mềm bạn chỉ việc mở file jar mà bạn muốn dịch ngược và bùm!
 
Bổ sung: Lỗi thứ 3.IOExeption có thể xảy ra khi bạn không có quyền truy cập vào file (read/write)
 
Bạn dùng phần mềm decompile (dịch ngược) như JD GUI chẳng hạn, vào phần mềm bạn chỉ việc mở file jar mà bạn muốn dịch ngược và bùm!
- cậu ơi h sao nữa :<
15435
 
mở cái package me.badbones69.crazyauctions ra là sẽ có file mã nguồn java trong đó
 
Bạn không nên đọc mã nguồn của người khác khi chưa có một kiến thức nào trong đầu, bạn ít nhất phải đọc qua doc hoặc tài liệu hướng dẫn rồi hẵng bắt đầu
 
Nội dung tương tự Xem nhiều nhất Xem thêm

Thống kê nội dung

Tạo
nahkd123,
Trả lời lần cuối từ
JustMango,
Trả lời
17
Lượt xem
1,149
Quay lại
Trên cùng