Day 46 of Sharing What I’ve Learned🚀 Different Ways to Handle Exceptions in Java Continuing with exception handling, I explored how Java provides multiple ways to handle exceptions effectively depending on the situation. 🔹1. Using try-catch The most common way to handle exceptions: try { int c = a / b; } catch (ArithmeticException e) { System.out.println("Cannot divide by zero"); } ✔ Handles specific exceptions ✔ Prevents abrupt program termination 🔹 2. Multiple catch blocks We can handle different exceptions separately: try { int arr[] = new int[5]; arr[10] = 50; } catch (ArithmeticException e) { System.out.println("Arithmetic Error"); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Array Index Issue"); } ✔ Helps in precise error handling ✔ Improves debugging 🔹3. Using finally block This block always executes (whether exception occurs or not): try { int c = a / b; } catch (Exception e) { System.out.println("Error occurred"); } finally { System.out.println("Execution completed"); } ✔ Used for cleanup (closing files, DB connections) 🔹 4. Using throw keyword Used to explicitly throw an exception: if (b == 0) { throw new ArithmeticException("Invalid denominator"); } ✔ Useful for custom validations 🔹5. Using throws keyword Used to declare exceptions in method signature: public void readFile() throws IOException { // code } ✔ Passes responsibility to the caller 🔹Key Insight Different situations require different handling strategies: ✔ try-catch → immediate handling ✔ multiple catch → specific handling ✔ finally → cleanup ✔ throw → manual exception creation ✔ throws → delegation 🔹 Realization Handling exceptions is not just about avoiding crashes — it’s about writing code that behaves predictably even in unexpected situations. That’s what makes applications reliable. #Java #CoreJava #ExceptionHandling #Programming #DeveloperJourney #100DaysOfCode #CodingJourney #Day46 grateful for guidance from, Sharath R , TAP Academy
Java Exception Handling Strategies
More Relevant Posts
-
Day 49 of Sharing What I’ve Learned🚀 ArrayList in Java In the Java Collections Framework, ArrayList is one of the first classes that helps manage data easily and efficiently. 🔹 What is ArrayList? ArrayList is a dynamic array in Java that can grow and shrink automatically as elements are added or removed. Unlike normal arrays, you don’t need to worry about size — it manages that internally. 🔹 Key Features ✔ Maintains insertion order ✔ Allows duplicate elements ✔ Provides fast random access (index-based) ✔ Automatically resizes when needed 🔹 Why Not Use Arrays? Traditional arrays have limitations: ❌ Fixed size ❌ Manual resizing ❌ Less flexibility ArrayList solves all of these problems with built-in methods. 🔹 Common Methods ✔ add() → Insert elements ✔ get() → Access elements ✔ set() → Update elements ✔ remove() → Delete elements ✔ size() → Get total elements 🔹 Example import java.util.ArrayList; public class Demo { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); list.add("Java"); // duplicate allowed System.out.println(list); // [Java, Python, Java] list.remove("Python"); System.out.println(list.get(0)); // Java } } 🔹 When to Use ArrayList? ✔ When you need frequent data access ✔ When order matters ✔ When duplicates are allowed ✔ When size is not fixed 🔹 Key Insight ArrayList is powerful, but not always the best choice. If your use case involves frequent insertions/deletions in the middle, other structures like LinkedList may perform better. 🔹 Realization Learning ArrayList made me realize something important — Java is not just about writing logic, it’s also about choosing the right structure to support that logic. #Java #CoreJava #ArrayList #CollectionsFramework #DataStructures #Programming #DeveloperJourney #100DaysOfCode #CodingJourney #Day49 Grateful for guidance from, Sharath R TAP Academy
To view or add a comment, sign in
-
-
Day 62 of Sharing What I’ve Learned🚀 Iterator in Java — Safe and Efficient Traversal After understanding how collections store and organize data, I revisited an important concept — how to safely traverse them using Iterator. 👉 Accessing data is easy… but doing it correctly and safely matters more. 🔹 What is an Iterator? Iterator is an interface in Java used to traverse elements of a collection one by one. 👉 It provides a standard way to loop through: ArrayList HashSet LinkedList And more… 🔹 Why not just use a for loop? Using a normal loop works… but it has limitations: ❌ Not safe when modifying collection ❌ Can lead to ConcurrentModificationException ❌ Not universal for all collection types 👉 That’s where Iterator comes in ✔ 🔹 Key Methods of Iterator hasNext() → checks if next element exists next() → returns the next element remove() → removes the current element safely 🔹 Example import java.util.*; public class Main { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); list.add("C++"); Iterator<String> it = list.iterator(); while(it.hasNext()) { String lang = it.next(); System.out.println(lang); } } } 🔹 Real Advantage 💡 👉 Removing elements while iterating: Iterator<String> it = list.iterator(); while(it.hasNext()) { if(it.next().equals("Python")) { it.remove(); // Safe removal } } ✔ No errors ✔ Clean logic ✔ Interview-friendly concept 🔹 Day 62 Realization Traversing data is not just about loops — it’s about doing it safely and efficiently. 👉 Iterator provides better control and prevents runtime issues 👉 Essential when working with dynamic collections #Java #Collections #DataStructures #CollectionsFramework #Iterator #Programming #DeveloperJourney #100DaysOfCode #Day61 Grateful for guidance from, TAP Academy Sharath R kshitij kenganavar
To view or add a comment, sign in
-
-
Day 53 of Sharing What I’ve Learned 🚀 ArrayDeque in Java — Fast & Flexible Queue Alternative After understanding how LinkedList works as a Queue, I explored a more optimized and powerful structure in the Java Collections Framework — ArrayDeque 🔹 What is ArrayDeque? ArrayDeque is a resizable array-based implementation of a Deque (Double-Ended Queue). 👉 It allows insertion and deletion from both ends efficiently. 🔹 Why use ArrayDeque over LinkedList? ✔ Faster Performance No node traversal → better speed compared to LinkedList. ✔ No Extra Memory Overhead Doesn’t store pointers like LinkedList → more memory efficient. ✔ Better Cache Performance Elements are stored contiguously → faster access. ✔ Acts as Stack + Queue Can be used as: Stack (LIFO) Queue (FIFO) Deque (both ends) 🔹 Key Operations ✔ addFirst() / addLast() ✔ removeFirst() / removeLast() ✔ peekFirst() / peekLast() 🔹 When should we use ArrayDeque? 👉 Use ArrayDeque when: ✔ You need fast insertions/deletions at both ends ✔ You want a better alternative to Stack or LinkedList ✔ Performance matters (less overhead) 🔹 When NOT to use? ❌ When you need random access (indexing) ❌ When frequent middle operations are required 🔹 Key Insight 💡 Not all Queues are equal — 👉 Choosing the right implementation (LinkedList vs ArrayDeque) can significantly impact performance. 🔹 Day 53 Realization 🎯 Efficiency isn’t just about solving problems — 👉 It’s about solving them smartly with the right tools. #Java #ArrayDeque #DataStructures #CollectionsFramework #Programming #DeveloperJourney #100DaysOfCode #Day53 Grateful for guidance from, Sharath R TAP Academy
To view or add a comment, sign in
-
-
Day 48 of Sharing What I’ve Learned🚀 Java Collections Framework When working with data in Java, one thing becomes essential very quickly — how efficiently you store, manage, and access it. That’s where the Java Collections Framework comes in. 🔹 What is the Collections Framework? It’s a unified architecture in Java that provides ready-made classes and interfaces to store and manipulate groups of objects efficiently. Introduced as part of the core Java libraries (from Java 1.2), it replaces older, less flexible structures with a more powerful and standardized approach. 🔹 Core Interfaces At the heart of the framework are a few key interfaces: ✔ Collection → Root interface for most data structures ✔ List → Ordered collection (allows duplicates) ✔ Set → Unordered collection (no duplicates) ✔ Queue → Designed for processing elements (FIFO) For key-value data: ✔ Map → Stores data in key-value pairs (not part of Collection but part of the framework) 🔹 Common Implementations Each interface has multiple implementations based on use case: ✔ ArrayList → Dynamic array, fast access ✔ LinkedList → Efficient insertions/deletions ✔ HashSet → No duplicates, fast lookup ✔ TreeSet → Sorted unique elements ✔ HashMap → Key-value storage with fast access ✔ TreeMap → Sorted key-value pairs 🔹 Why It Matters ✔ Reduces effort by providing built-in data structures ✔ Improves performance with optimized implementations ✔ Makes code cleaner and more reusable 🔹 Key Insight Choosing the right collection is not about memorizing classes — it’s about understanding behavior, performance, and use case. 🔹 Realization Once you understand the Collections Framework, you stop focusing on how to store data and start focusing on how to solve problems. #Java #CoreJava #CollectionsFramework #DataStructures #Programming #DeveloperJourney #100DaysOfCode #CodingJourney #Day48 grateful for guidance from, Sharath R , TAP Academy
To view or add a comment, sign in
-
-
Access modifiers in Java confused me more than inheritance at first. Not because they are complex — but because I didn’t understand where they actually matter. This diagram helped me connect the dots 👇 Here’s what finally made sense: • public → no restrictions • private → only inside the class • default → package-level access • protected → the tricky one → works like default → BUT also accessible through inheritance (even outside the package) Access modifiers are not just about visibility — they define how safely and cleanly your code interacts across packages. That’s where Java moves from syntax → design. Grateful to TAP Academy and Harshit T sir for breaking this down clearly Which modifier took you the longest to understand? #Java #OOP #AccessModifiers #SoftwareDevelopment #LearningJourney
To view or add a comment, sign in
-
-
Day 11/100 – Java Practice Challenge 🚀 Continuing my #100DaysOfCode journey with another important Java concept. 🔹 Topic Covered: Compile-time vs Runtime Polymorphism 💻 Practice Code: 🔸 Compile-time Polymorphism (Method Overloading) class Calculator { int add(int a, int b) { return a + b; } int add(int a, int b, int c) { return a + b + c; } } 🔸 Runtime Polymorphism (Method Overriding) class Animal { void sound() { System.out.println("Animal sound"); } } class Cat extends Animal { @Override void sound() { System.out.println("Cat meows"); } } public class Main { public static void main(String[] args) { // Compile-time Calculator c = new Calculator(); System.out.println(c.add(10, 20)); System.out.println(c.add(10, 20, 30)); // Runtime Animal a = new Cat(); a.sound(); } } 📌 Key Learnings: ✔️ Compile-time → method decided at compile time ✔️ Runtime → method decided at runtime ✔️ Overloading vs Overriding difference 🎯 Focus: Understanding how Java resolves method calls 🔥 Interview Insight: Difference between compile-time and runtime polymorphism is one of the most frequently asked Java interview questions. #Java #100DaysOfCode #MethodOverloading #MethodOverriding #Polymorphism #JavaDeveloper #Programming #LearningInPublic
To view or add a comment, sign in
-
🚀 Day 29–33 of My Java Full Stack Development Journey In these days, I explored one of the most important concepts in Java — the Anatomy of a Java Class and its Execution Flow. I learned how Java programs are structured into Static (Class-Level) and Instance (Object-Level) components. 🔹 Static (Class-Level) Static variables and blocks belong to the class, not objects Loaded once during class loading Static methods (like main) cannot directly access instance variables 🔹 Instance (Object-Level) Instance variables and methods belong to individual objects Created when an object is instantiated Follow proper POJO standards (private variables + getters/setters) 💡 One of the key takeaways was understanding the Lifecycle of Execution in Java: 1️⃣ Class Loading Phase JVM loads the class Static variables are initialized Static blocks are executed 2️⃣ Object Creation Phase Memory is allocated for instance variables Instance blocks are executed 3️⃣ Constructor Execution Phase Constructor runs last Finalizes object initialization This helped me clearly understand how Java executes step by step internally, which is very important for writing optimized and bug-free code. Grateful to Tap Academy for helping me build strong fundamentals step by step 🙌 #Day29 #Day30 #Day31 #Day32 #Day33 #Java #OOP #Programming #FullStackDevelopment #JavaDeveloper #LearningJourney #CodingJourney #TapAcademy
To view or add a comment, sign in
-
-
🚀 Day 3/100 – Java Practice Challenge Continuing my #100DaysOfCode journey with another important core Java concept. 🔹 Topics Covered: Generics in Java Understanding type safety, reusability, and avoiding runtime errors. 💻 Practice Code: 🔸 Generic Class Example class Box { private T value; public void set(T value) { this.value = value; } public T get() { return value; } } 🔸 Usage Box intBox = new Box<>(); intBox.set(10); Box strBox = new Box<>(); strBox.set("Hello"); System.out.println(intBox.get()); // 10 System.out.println(strBox.get()); // Hello 📌 Key Learning: ✔ Generics provide compile-time type safety ✔ Avoid ClassCastException ✔ Help write reusable and clean code ⚠️ Important: • Use <?> for unknown types (wildcards) • Use for bounded types • Generics work only with objects, not primitives 🔥 Interview Insight: Generics use type erasure — type information is removed at runtime Widely used in collections like List, Map<K, V> 👉 Without Generics: List list = new ArrayList(); list.add("Java"); list.add(10); // No compile-time error ❌ #100DaysOfCode #Java #JavaDeveloper #Generics #CodingJourney #LearningInPublic #Programming
To view or add a comment, sign in
-
Day 5/100 – Java Practice Challenge 🚀 Continuing my #100DaysOfCode journey by diving deeper into Java OOP concepts. 🔹 Topic Covered: Abstraction using Abstract Class Abstraction helps in hiding internal implementation and exposing only the required functionality. 💻 Practice Code: 🔸 Abstract Class abstract class Employee { abstract void work(); void companyPolicy() { System.out.println("Follow company rules"); } } 🔸 Implementation Class class Developer extends Employee { void work() { System.out.println("Developer writes code"); } } 🔸 Usage public class Main { public static void main(String[] args) { Employee emp = new Developer(); emp.work(); emp.companyPolicy(); } } 📌 Key Learnings: ✔️ Cannot create object of abstract class ✔️ Can have both abstract & concrete methods ✔️ Supports partial abstraction ✔️ Used when classes share common behavior 🎯 Focus: "What to do" instead of "how to do" 🔥 Interview Insight: Abstract classes are useful when we want to provide a base structure with some common implementation. #Java #100DaysOfCode #OOP #JavaDeveloper #CodingJourney #LearningInPublic
To view or add a comment, sign in
-
Day 47 of Sharing What I’ve Learned🚀 Custom Exceptions in Java While working with exception handling, one thing became clear — built-in exceptions are not always enough to represent real-world scenarios. That’s where custom exceptions come in. 🔹 What are Custom Exceptions? Custom exceptions allow us to define our own error types based on application logic. Instead of relying only on generic exceptions, we can create meaningful and domain-specific errors. 🔹 Creating a Custom Exception class InvalidAgeException extends Exception { public InvalidAgeException(String message) { super(message); } } ✔ Improves code readability ✔ Makes errors more meaningful 🔹 Using Custom Exception public class Main { public static void main(String[] args) { int age = 15; try { if (age < 18) { throw new InvalidAgeException("Age must be 18 or above"); } } catch (InvalidAgeException e) { System.out.println(e.getMessage()); } } } ✔ Helps enforce business rules ✔ Makes validation cleaner 🔹 Checked vs Unchecked Custom Exceptions ✔ Extend Exception → Checked (handled at compile time) ✔ Extend RuntimeException → Unchecked (handled at runtime) 🔹 Key Insight Good exception handling is not just about catching errors — it’s about designing them properly. Custom exceptions make code more expressive, structured, and easier to debug. 🔹 Realization When exceptions reflect real-world problems, code becomes easier to understand and maintain. That’s when error handling truly becomes part of good design. #Java #CoreJava #ExceptionHandling #CustomException #Programming #DeveloperJourney #100DaysOfCode #CodingJourney #Day47 grateful for guidance from, Sharath R , TAP Academy
To view or add a comment, sign in
-
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development