As a Java developer, encountering errors is an inevitable part of the journey. Some errors are so common that almost every programmer has faced them at least once. In this post, we will explore these common Java errors, understand why they occur, and how to fix them.
1. NullPointerException (NPE)
Error: This occurs when trying to access a method or field of an object that is null
.
Example:
String str = null;
System.out.println(str.length()); // Causes NullPointerException
Fix: Always check for null
before accessing objects.
if (str != null) {
System.out.println(str.length());
}
2. ArrayIndexOutOfBoundsException
Error: Occurs when accessing an array index that is out of range.
Example:
int[] arr = {1, 2, 3};
System.out.println(arr[3]); // Index 3 is out of bounds
Fix: Ensure the index is within the array size.
if (index >= 0 && index < arr.length) {
System.out.println(arr[index]);
}
3. ClassCastException
Error: Happens when trying to cast an object to an incompatible class.
Example:
Object obj = "Hello";
Integer num = (Integer) obj; // Causes ClassCastException
Fix: Use instanceof
before casting.
if (obj instanceof Integer) {
Integer num = (Integer) obj;
}
4. StackOverflowError
Error: Happens due to infinite recursion.
Example:
public static void recurse() {
recurse(); // Infinite recursion
}
Fix: Ensure proper exit conditions in recursive methods.
public static void recurse(int count) {
if (count == 0) return;
recurse(count - 1);
}
5. OutOfMemoryError
Error: Occurs when JVM runs out of memory.
Example:
List<int[]> list = new ArrayList<>();
while (true) {
list.add(new int[1000000]); // Consumes memory continuously
}
Fix: Optimize memory usage, avoid large object allocations.
list = null; // Help garbage collection
System.gc();
6. ConcurrentModificationException
Error: Happens when modifying a collection while iterating over it.
Example:
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
for (String s : list) {
list.remove(s); // Causes ConcurrentModificationException
}
Fix: Use an iterator for safe removal.
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
iterator.next();
iterator.remove();
}
7. NumberFormatException
Error: Occurs when converting a String
to a number but the format is incorrect.
Example:
int num = Integer.parseInt("ABC"); // Causes NumberFormatException
Fix: Validate input before parsing.
try {
int num = Integer.parseInt("123");
} catch (NumberFormatException e) {
System.out.println("Invalid number format");
}
8. NoClassDefFoundError
Error: Happens when a class was available during compilation but is missing at runtime.
Example:
javac SomeClass.java
rm SomeClass.class
java SomeClass // Causes NoClassDefFoundError
Fix: Ensure all required class files are present in the classpath.
javac -cp . SomeClass.java
java -cp . SomeClass
9. IllegalArgumentException
Error: Occurs when passing an illegal argument to a method.
Example:
Thread.sleep(-1000); // Causes IllegalArgumentException
Fix: Validate arguments before passing them to methods.
if (time >= 0) {
Thread.sleep(time);
}
10. UnsupportedOperationException
Error: Occurs when calling an unsupported operation on a collection.
Example:
List<String> list = Arrays.asList("A", "B");
list.add("C"); // Causes UnsupportedOperationException
Fix: Use a mutable list instead.
List<String> list = new ArrayList<>(Arrays.asList("A", "B"));
list.add("C");
Conclusion
These are some of the most common Java errors that every developer encounters. By understanding why they occur and how to fix them, you can write more robust and error-free code. Have you faced any of these errors recently? Let us know in the comments!
Comments
Post a Comment