- 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ọ uwuNó đươ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");
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ứ


chả biết decompile như lào
