Skip to main content

Command Palette

Search for a command to run...

Strings and Exception Handling in Java

Published
3 min readView as Markdown

Java provides powerful features to handle text data and runtime errors efficiently. Among them, Strings and Exception Handling are two core concepts that play a major role in building reliable and maintainable applications.

This article explains the fundamentals of String handling and Exception handling in Java, along with important concepts, differences, and use cases.


String Handling in Java

What is a String?

In Java, a String is an object that represents a sequence of characters. The String class is part of the java.lang package and is widely used for storing and manipulating text.

String s = "Java";

String Immutability

Strings in Java are immutable, meaning once a String object is created, its value cannot be changed.

String s = "Hello";
s = s + " World";

In the above example, a new String object is created instead of modifying the existing one.

Reasons for String Immutability:

  • Improves security

  • Enables memory optimization

  • Makes Strings thread-safe

  • Supports String Constant Pool (SCP)


String Constant Pool (SCP)

The String Constant Pool is a special memory area inside the heap where Java stores String literals.

String s1 = "Java";
String s2 = "Java";

Both s1 and s2 point to the same memory location, which helps in saving memory.


String vs StringBuffer vs StringBuilder

  • String

    • Immutable

    • Thread-safe

    • Slower when modifications are frequent

  • StringBuffer

    • Mutable

    • Thread-safe

    • Slower than StringBuilder

  • StringBuilder

    • Mutable

    • Not thread-safe

    • Faster and preferred for single-threaded applications

Usage:

  • Use String when data does not change

  • Use StringBuffer in multi-threaded environments

  • Use StringBuilder for better performance in single-threaded programs


Exception Handling in Java

What is an Exception?

An exception is an unexpected event that occurs during program execution and disrupts the normal flow of the program.

Example:

int a = 10 / 0;  // ArithmeticException

Error vs Exception

  • Error: Serious issues that cannot be handled by the program (e.g., OutOfMemoryError)

  • Exception: Problems that can be handled using code


Checked and Unchecked Exceptions

  • Checked Exceptions

    • Checked at compile time

    • Example: IOException

  • Unchecked Exceptions

    • Occur at runtime

    • Example: NullPointerException


try-catch-finally Block

The try-catch-finally block is used to handle exceptions gracefully.

try {
    int a = 10 / 0;
} catch (ArithmeticException e) {
    System.out.println("Cannot divide by zero");
} finally {
    System.out.println("Execution completed");
}
  • try contains risky code

  • catch handles the exception

  • finally always executes


throw and throws Keywords

  • throw

    • Used to explicitly throw an exception
throw new ArithmeticException();
  • throws

    • Used to declare exceptions
void readFile() throws IOException {
}

Exception Propagation

If an exception is not handled in a method, it is passed to the calling method. This process is known as exception propagation and helps in centralized exception handling.


Conclusion

Understanding String handling and Exception handling is essential for writing efficient and stable Java programs. Concepts like String immutability, SCP, and proper exception handling help developers write clean, secure, and maintainable code.

Strong fundamentals in these areas form a solid base for advanced Java and Full Stack development.