• Chào bạn, hãy đăng ký hoặc đăng nhập để tham gia cùng bọn mình và sử dụng được đầy đủ chức năng của diễn đàn :).
nahkd123

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

nahkd123

DEVELOPER
THÀNH VIÊN
Tham gia
21/01/2018
Bài viết
728
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ứ
 
ủa fix này thì dùng app gì :<
 
nhập trong console à
 
mà tớ cũng hay bị lỗi console cũng muốn fix cơ :<
 
mà tớ cũng hay bị lỗi console cũng muốn fix cơ :<
nếu muốn có thể decompile, nhưng mà phải có một chút kiến thức về java mới fix được.
 
decompile là gì :<
 
tớ có 0,0000000001 kiến thức |:< pls chỉ tớ
 
decompile là gì :<
Decompile tức là dịch ngược từ file jar sang mã nguồn để chỉnh sửa. Thường thì một số plugin premium không thể decompile được
 
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
 
Similar content Most view Xem thêm
Back
Top Bottom