SLC S22 Week4 || Exception handling in Java

Exception handling in Java.png

Created by @kouba01 using Canva & PhotoFilter

Hello Steemians!

Welcome to the fourth week of the Steemit Learning Challenge Season 22, where we explore the intricacies of exception handling in Java, a vital skill for building robust, error-tolerant applications.

This week, we will dive into the mechanisms of detecting and managing exceptional situations in your programs, such as invalid data inputs or unforeseen file reading issues. By mastering exception handling, you’ll not only create more reliable code but also make your applications more maintainable and user-friendly.

Through this week’s tasks, you’ll gain hands-on experience in designing programs that can gracefully recover from errors, maintaining their functionality even in unexpected situations.

Join us on this exciting journey into Java’s exception handling mechanisms, and take another step towards becoming a proficient developer!


1. Why Use Exceptions?

Objectives of Exceptions:

  1. Handle errors without abruptly stopping the program:
    • An unexpected error (e.g., division by zero, missing file) can stop a program. Exceptions allow for graceful error handling.
  2. Isolate error-handling code:
    • Instead of manually checking for errors throughout the program, error handling can be centralized.
  3. Improve readability and maintainability:
    • Code without exception handling can become cluttered with repetitive checks. Exceptions make the main logic clearer.

2. Fundamental Blocks

Syntax:

try {
    // Code that might throw an exception
} catch (ExceptionType variableName) {
    // Code to handle the exception
}

2.1. try Block

This block contains code that might throw an exception. If no exception is thrown, the code continues normally.

Example:

image.png

2.2. catch Block

A catch block intercepts and processes an exception thrown in the try block.

Example with an exception:

image.png

2.3. finally Block

The finally block is always executed, whether or not the try block generates an exception. It is often used to clean up resources, such as closing files or freeing allocated memory.

Example with a file:

image.png

Output if the file is missing:

File not found.

Output if the file is present and error-free:

Reading successful!
File closed.

3. Throwing an Exception (throw)

In Java, an exception is thrown using the throw statement. The throw keyword generates an exception, typically accompanied by an exception object.

Simple Example:

image.png


4. Custom Exceptions

Java allows creating custom exception classes by extending the Exception class.

4.1. Defining a Custom Exception

image.png

4.2. Throwing a Custom Exception

image.png


5. Handling Multiple Exceptions

When multiple exceptions may be thrown, you can capture them with multiple catch blocks. Java (7+) also allows a single block to handle multiple exception types.

Example with Multiple catch Blocks

image.png


6. The throws Keyword

A method that might throw an exception must declare this possibility using throws in its signature.

Example:

image.png


7. Rethrowing an Exception

In a catch block, an exception can be rethrown using throw to be handled at a higher level.

Example:

image.png


8. finally Block for Resource Cleanup

The finally block is often used to release resources, such as closing database connections or files.

Example:

image.png


Homework :

Task1. Detecting Faulty Sensor Readings (1.5 Points)

Problem Statement

You are tasked with managing temperature data collected from multiple sensors in a factory. A sensor may send invalid data (e.g., negative temperatures for a sensor meant to measure above-freezing temperatures). Write a program to process a list of temperature readings and handle exceptions for any invalid values.

Example Explanation

If the sensor provides readings [23, -5, 18, 30], your program should skip the invalid value -5, log an error, and continue processing the other readings. Ensure the program doesn't stop processing all sensors because of one faulty reading.


Task2. Dynamic Input Validation for an Event (1.5 Points)

Problem Statement

An online registration form accepts participant ages for an event. The age must be between 18 and 60. Write a program that validates the input and throws a custom exception InvalidAgeException for out-of-range ages. Your program should catch the exception and display a message explaining why the input was invalid.

Example Explanation

If a user enters 16, the program should inform them: "Age must be between 18 and 60. You entered: 16." The system should prompt for input again without crashing.


Task3. Hierarchical Exception Handling in a Game (1.5 Points)

Problem Statement

You are developing a simple RPG (Role-Playing Game). Players may encounter various errors such as insufficient health points, invalid moves, or missing inventory items. Design a hierarchy of custom exceptions (e.g., HealthException, MoveException, InventoryException) and write a program to handle them at appropriate levels, depending on the context.

Example Explanation

A player's health drops below zero due to an invalid move. The MoveException should handle the invalid move, and the HealthException should notify that the player is out of health points. Ensure exceptions are handled independently for better game stability.


Task4. Banking System Transaction Errors (2 Points)

Problem Statement

In a banking system, users can transfer money between accounts. Create a program that validates transactions, handling exceptions such as InsufficientFundsException, InvalidAccountException, and NegativeTransferException. Ensure the program provides detailed feedback to the user and logs errors for failed transactions.

Example Explanation

If a user attempts to transfer -100, the program should catch NegativeTransferException and inform the user: "Transfer amount must be positive. You entered: -100." For an invalid account, display: "Account not found. Please verify the details."


Task5. Automating Resource Cleanup (2 Points)

Problem Statement

Write a program that opens multiple files, reads their contents, and closes them properly even if an exception occurs during the reading process. Use a finally block or any other mechanism to ensure resource cleanup.

Example Explanation

If a file named data.txt is missing, the program should log: "File not found: data.txt." Regardless of the error, the program should ensure any open files are closed before terminating. For instance, "Closed file: config.txt" should be displayed for successfully handled files.


Task6. Predicting Future Errors Using Logs (1.5 Points)

Problem Statement

Design a program that processes user activity logs for an e-commerce website. If a user attempts to log in with incorrect credentials more than 3 times consecutively, throw a SuspiciousActivityException. Ensure the program records the activity for further analysis and alerts the administrator.

Example Explanation

If a user attempts logins with passwords abc123, password!, and welcome consecutively without success, the system should raise an alert: "Suspicious activity detected for user: kouba01." Administrators should be able to review these details without halting the service.


Key Notes for All Exercises

  • Focus on clear problem statements to guide participants.
  • Each solution should emphasize graceful handling of errors.
  • Encourage participants to write meaningful error messages for users and logs for administrators.

Contest Guidelines

  • Post Format:

  • Rules:

    • Posts must be #steemexclusive.
    • Avoid plagiarism and AI-generated content.
    • Include original or copyright-free images with proper attribution.
    • Submission period: Monday, January 6, 2025, 00:00 UTC - Sunday, January 12, 2025, 23:59 UTC.

Rewards

SC01/SC02 would be checking on the entire 15 participating Teaching Teams and Challengers and upvoting outstanding content. Upvote is not guaranteed for all articles. Kindly take note.

At the end of the week, we would nominate the top 4 users who had performed well in the contest and would be eligible for votes from SC01/SC02.

Important Notice: The selection of the four would be based solely on the quality of their post. Number of comments is no longer a factor to be considered.


Best Regards,
Dynamic Devs Team