diff --git a/core-java-modules/core-java-exceptions/README.md b/core-java-modules/core-java-exceptions/README.md
index 78599c6b7b..0120b970c3 100644
--- a/core-java-modules/core-java-exceptions/README.md
+++ b/core-java-modules/core-java-exceptions/README.md
@@ -1,8 +1,13 @@
-## Relevant Articles:
+## Core Java Exceptions
-- [Will an Error Be Caught by Catch Block in Java?](https://www.baeldung.com/java-error-catch)
-- [Java Global Exception Handler](http://www.baeldung.com/java-global-exception-handler)
-- [Common Java Exceptions](http://www.baeldung.com/java-common-exceptions)
-- [Throw Exception in Optional in Java 8](https://www.baeldung.com/java-optional-throw-exception)
-- [How to Find an Exception’s Root Cause in Java](https://www.baeldung.com/java-exception-root-cause)
-- [Java – Try with Resources](https://www.baeldung.com/java-try-with-resources)
+This module contains articles about core java exceptions
+
+### Relevant articles:
+- [Chained Exceptions in Java](https://www.baeldung.com/java-chained-exceptions)
+- [ClassNotFoundException vs NoClassDefFoundError](https://www.baeldung.com/java-classnotfoundexception-and-noclassdeffounderror)
+- [Create a Custom Exception in Java](https://www.baeldung.com/java-new-custom-exception)
+- [Exception Handling in Java](https://www.baeldung.com/java-exceptions)
+- [Differences Between Final, Finally and Finalize in Java](https://www.baeldung.com/java-final-finally-finalize)
+- [Difference Between Throw and Throws in Java](https://www.baeldung.com/java-throw-throws)
+- [“Sneaky Throws” in Java](https://www.baeldung.com/java-sneaky-throws)
+- [The StackOverflowError in Java](https://www.baeldung.com/java-stack-overflow-error)
diff --git a/core-java-modules/core-java-exceptions/pom.xml b/core-java-modules/core-java-exceptions/pom.xml
index 43c4e31033..da5ec76622 100644
--- a/core-java-modules/core-java-exceptions/pom.xml
+++ b/core-java-modules/core-java-exceptions/pom.xml
@@ -1,55 +1,46 @@
+
- 4.0.0
- com.baeldung.exception.numberformat
- core-java-exceptions
- 0.0.1-SNAPSHOT
- core-java-exceptions
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ com.baeldung.exceptions
+ 4.0.0
+ core-java-exceptions
+ 0.1.0-SNAPSHOT
+ core-java-exceptions
+ jar
-
- com.baeldung
- parent-java
- 0.0.1-SNAPSHOT
- ../../parent-java
-
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
-
-
- junit
- junit
- ${junit.version}
- test
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh-core.version}
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh-generator-annprocess.version}
-
-
-
- org.assertj
- assertj-core
- ${assertj-core.version}
- test
-
-
+
+
+ javax.mail
+ mail
+ ${javax.mail.version}
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ provided
+
+
+
+ org.assertj
+ assertj-core
+ ${assertj-core.version}
+ test
+
+
-
- 3.9
- 1.19
- 3.10.0
- 1.19
-
+
+ 1.5.0-b01
+
+ 3.10.0
+
-
+
\ No newline at end of file
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/Arithmetic.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/Arithmetic.java
deleted file mode 100644
index 138916ec60..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/Arithmetic.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.baeldung.exceptions;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class Arithmetic {
-
- private static Logger LOGGER = LoggerFactory.getLogger(Arithmetic.class);
-
- public static void main(String[] args) {
-
- try {
- int result = 30 / 0; // Trying to divide by zero
- } catch (ArithmeticException e) {
- LOGGER.error("ArithmeticException caught!");
- }
-
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ArrayIndexOutOfBounds.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ArrayIndexOutOfBounds.java
deleted file mode 100644
index 93b53f284c..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ArrayIndexOutOfBounds.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.baeldung.exceptions;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ArrayIndexOutOfBounds {
-
- private static Logger LOGGER = LoggerFactory.getLogger(ArrayIndexOutOfBounds.class);
-
- public static void main(String[] args) {
-
- int[] nums = new int[] { 1, 2, 3 };
-
- try {
- int numFromNegativeIndex = nums[-1]; // Trying to access at negative index
- int numFromGreaterIndex = nums[4]; // Trying to access at greater index
- int numFromLengthIndex = nums[3]; // Trying to access at index equal to size of the array
- } catch (ArrayIndexOutOfBoundsException e) {
- LOGGER.error("ArrayIndexOutOfBoundsException caught");
- }
-
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/CheckedUncheckedExceptions.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/CheckedUncheckedExceptions.java
deleted file mode 100644
index 780189b654..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/CheckedUncheckedExceptions.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.baeldung.exceptions;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-
-public class CheckedUncheckedExceptions {
- public static void checkedExceptionWithThrows() throws FileNotFoundException {
- File file = new File("not_existing_file.txt");
- FileInputStream stream = new FileInputStream(file);
- }
-
- public static void checkedExceptionWithTryCatch() {
- File file = new File("not_existing_file.txt");
- try {
- FileInputStream stream = new FileInputStream(file);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- }
-
- public static int divideByZero() {
- int numerator = 1;
- int denominator = 0;
- return numerator / denominator;
- }
-
- public static void checkFile(String fileName) throws IncorrectFileNameException {
- if (fileName == null || fileName.isEmpty()) {
- throw new NullOrEmptyException("The filename is null.");
- }
- if (!isCorrectFileName(fileName)) {
- throw new IncorrectFileNameException("Incorrect filename : " + fileName);
- }
- }
-
- private static boolean isCorrectFileName(String fileName) {
- if (fileName.equals("wrongFileName.txt"))
- return false;
- else
- return true;
- }
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ClassCast.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ClassCast.java
deleted file mode 100644
index 183f8f54a3..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ClassCast.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.baeldung.exceptions;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-class Animal {
-
-}
-
-class Dog extends Animal {
-
-}
-
-class Lion extends Animal {
-
-}
-
-public class ClassCast {
-
- private static Logger LOGGER = LoggerFactory.getLogger(ClassCast.class);
-
- public static void main(String[] args) {
-
- try {
- Animal animalOne = new Dog(); // At runtime the instance is dog
- Dog bruno = (Dog) animalOne; // Downcasting
-
- Animal animalTwo = new Lion(); // At runtime the instance is animal
- Dog tommy = (Dog) animalTwo; // Downcasting
- } catch (ClassCastException e) {
- LOGGER.error("ClassCastException caught!");
- }
-
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/FileNotFound.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/FileNotFound.java
deleted file mode 100644
index bb9e0bf4ac..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/FileNotFound.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.baeldung.exceptions;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class FileNotFound {
-
- private static Logger LOGGER = LoggerFactory.getLogger(FileNotFound.class);
-
- public static void main(String[] args) {
-
- BufferedReader reader = null;
- try {
- reader = new BufferedReader(new FileReader(new File("/invalid/file/location")));
- } catch (FileNotFoundException e) {
- LOGGER.error("FileNotFoundException caught!");
- }
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/GlobalExceptionHandler.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/GlobalExceptionHandler.java
deleted file mode 100644
index ab46c83da4..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/GlobalExceptionHandler.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.baeldung.exceptions;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class GlobalExceptionHandler {
-
- public static void main(String[] args) {
-
- Handler globalExceptionHandler = new Handler();
- Thread.setDefaultUncaughtExceptionHandler(globalExceptionHandler);
- new GlobalExceptionHandler().performArithmeticOperation(10, 0);
- }
-
- public int performArithmeticOperation(int num1, int num2) {
- return num1/num2;
- }
-
-}
-
-class Handler implements Thread.UncaughtExceptionHandler {
-
- private static Logger LOGGER = LoggerFactory.getLogger(Handler.class);
-
- public void uncaughtException(Thread t, Throwable e) {
- LOGGER.info("Unhandled exception caught!");
- }
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalArgument.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalArgument.java
deleted file mode 100644
index 801536cb2d..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalArgument.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.baeldung.exceptions;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class IllegalArgument {
-
- private static Logger LOGGER = LoggerFactory.getLogger(IllegalArgument.class);
-
- public static void main(String[] args) {
- try {
- Thread.sleep(-1000);
- } catch (InterruptedException e) {
- LOGGER.error("IllegalArgumentException caught!");
- }
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalState.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalState.java
deleted file mode 100644
index e8ddcea3c2..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalState.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.baeldung.exceptions;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class IllegalState {
-
- private static Logger LOGGER = LoggerFactory.getLogger(IllegalState.class);
-
- public static void main(String[] args) {
-
- List intList = new ArrayList<>();
-
- for (int i = 0; i < 10; i++) {
- intList.add(i);
- }
-
- Iterator intListIterator = intList.iterator(); // Initialized with index at -1
-
- try {
- intListIterator.remove(); // IllegalStateException
- } catch (IllegalStateException e) {
- LOGGER.error("IllegalStateException caught!");
- }
-
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IncorrectFileNameException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IncorrectFileNameException.java
deleted file mode 100644
index 9877fe25ca..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IncorrectFileNameException.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.baeldung.exceptions;
-
-public class IncorrectFileNameException extends Exception {
- private static final long serialVersionUID = 1L;
-
- public IncorrectFileNameException(String errorMessage) {
- super(errorMessage);
- }
-
- public IncorrectFileNameException(String errorMessage, Throwable thr) {
- super(errorMessage, thr);
- }
-}
\ No newline at end of file
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/InterruptedExceptionExample.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/InterruptedExceptionExample.java
deleted file mode 100644
index 319fd33591..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/InterruptedExceptionExample.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.baeldung.exceptions;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-class ChildThread extends Thread {
-
- private static Logger LOGGER = LoggerFactory.getLogger(ChildThread.class);
-
- public void run() {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- LOGGER.error("InterruptedException caught!");
- }
- }
-
-}
-
-public class InterruptedExceptionExample {
-
- public static void main(String[] args) throws InterruptedException {
- ChildThread childThread = new ChildThread();
- childThread.start();
- childThread.interrupt();
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/MalformedURL.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/MalformedURL.java
deleted file mode 100644
index 57fcddf76b..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/MalformedURL.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.baeldung.exceptions;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class MalformedURL {
-
- private static Logger LOGGER = LoggerFactory.getLogger(MalformedURL.class);
-
- public static void main(String[] args) {
-
- URL baeldungURL = null;
-
- try {
- baeldungURL = new URL("malformedurl");
- } catch (MalformedURLException e) {
- LOGGER.error("MalformedURLException caught!");
- }
-
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullOrEmptyException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullOrEmptyException.java
deleted file mode 100644
index d4ee9c0d6f..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullOrEmptyException.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.baeldung.exceptions;
-
-public class NullOrEmptyException extends RuntimeException {
-
- private static final long serialVersionUID = 1L;
-
- public NullOrEmptyException(String errorMessage) {
- super(errorMessage);
- }
-
- public NullOrEmptyException(String errorMessage, Throwable thr) {
- super(errorMessage, thr);
- }
-}
\ No newline at end of file
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullPointer.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullPointer.java
deleted file mode 100644
index 2402a786a9..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullPointer.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.baeldung.exceptions;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class NullPointer {
-
- private static Logger LOGGER = LoggerFactory.getLogger(NullPointer.class);
-
- public static void main(String[] args) {
-
- Person personObj = null;
-
- try {
- String name = personObj.personName; // Accessing the field of a null object
- personObj.personName = "Jon Doe"; // Modifying the field of a null object
- } catch (NullPointerException e) {
- LOGGER.error("NullPointerException caught!");
- }
-
- }
-}
-
-class Person {
-
- public String personName;
-
- public String getPersonName() {
- return personName;
- }
-
- public void setPersonName(String personName) {
- this.personName = personName;
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NumberFormat.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NumberFormat.java
deleted file mode 100644
index 7050e70aee..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NumberFormat.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.baeldung.exceptions;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class NumberFormat {
-
- private static Logger LOGGER = LoggerFactory.getLogger(NumberFormat.class);
-
- public static void main(String[] args) {
-
- String str1 = "100ABCD";
-
- try {
- int x = Integer.parseInt(str1); // Converting string with inappropriate format
- int y = Integer.valueOf(str1);
- } catch (NumberFormatException e) {
- LOGGER.error("NumberFormatException caught!");
- }
-
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ParseExceptionExample.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ParseExceptionExample.java
deleted file mode 100644
index f7fb4c91e4..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ParseExceptionExample.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.baeldung.exceptions;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ParseExceptionExample {
-
- private static Logger LOGGER = LoggerFactory.getLogger(ParseExceptionExample.class);
-
- public static void main(String[] args) {
-
- DateFormat format = new SimpleDateFormat("MM, dd, yyyy");
-
- try {
- format.parse("01, , 2010");
- } catch (ParseException e) {
- LOGGER.error("ParseException caught!");
- }
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/RootCauseFinder.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/RootCauseFinder.java
deleted file mode 100644
index cf449110e6..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/RootCauseFinder.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.baeldung.exceptions;
-
-import java.time.LocalDate;
-import java.time.Period;
-import java.time.format.DateTimeParseException;
-import java.util.Objects;
-
-/**
- * Utility class to find root cause exceptions.
- */
-public class RootCauseFinder {
-
- private RootCauseFinder() {
- }
-
- public static Throwable findCauseUsingPlainJava(Throwable throwable) {
- Objects.requireNonNull(throwable);
- Throwable rootCause = throwable;
- while (rootCause.getCause() != null && rootCause.getCause() != rootCause) {
- rootCause = rootCause.getCause();
- }
- return rootCause;
- }
-
- /**
- * Calculates the age of a person from a given date.
- */
- static class AgeCalculator {
-
- private AgeCalculator() {
- }
-
- public static int calculateAge(String birthDate) {
- if (birthDate == null || birthDate.isEmpty()) {
- throw new IllegalArgumentException();
- }
-
- try {
- return Period
- .between(parseDate(birthDate), LocalDate.now())
- .getYears();
- } catch (DateParseException ex) {
- throw new CalculationException(ex);
- }
- }
-
- private static LocalDate parseDate(String birthDateAsString) {
-
- LocalDate birthDate;
- try {
- birthDate = LocalDate.parse(birthDateAsString);
- } catch (DateTimeParseException ex) {
- throw new InvalidFormatException(birthDateAsString, ex);
- }
-
- if (birthDate.isAfter(LocalDate.now())) {
- throw new DateOutOfRangeException(birthDateAsString);
- }
-
- return birthDate;
- }
-
- }
-
- static class CalculationException extends RuntimeException {
-
- CalculationException(DateParseException ex) {
- super(ex);
- }
- }
-
- static class DateParseException extends RuntimeException {
-
- DateParseException(String input) {
- super(input);
- }
-
- DateParseException(String input, Throwable thr) {
- super(input, thr);
- }
- }
-
- static class InvalidFormatException extends DateParseException {
-
- InvalidFormatException(String input, Throwable thr) {
- super("Invalid date format: " + input, thr);
- }
- }
-
- static class DateOutOfRangeException extends DateParseException {
-
- DateOutOfRangeException(String date) {
- super("Date out of range: " + date);
- }
-
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StackTraceToString.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StackTraceToString.java
deleted file mode 100644
index c6bf915996..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StackTraceToString.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.baeldung.exceptions;
-
-import org.apache.commons.lang3.exception.ExceptionUtils;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-public class StackTraceToString {
-
- public static void main(String[] args) {
- // Convert a StackTrace to String using core java
- try {
- throw new NullPointerException();
- } catch (Exception e) {
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- e.printStackTrace(pw);
-
- System.out.println(sw.toString());
- }
-
- // Convert a StackTrace to String using Apache Commons
- try {
- throw new IndexOutOfBoundsException();
- } catch (Exception e) {
- System.out.println(ExceptionUtils.getStackTrace(e));
- }
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StringIndexOutOfBounds.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StringIndexOutOfBounds.java
deleted file mode 100644
index bc297be498..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StringIndexOutOfBounds.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.baeldung.exceptions;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class StringIndexOutOfBounds {
-
- private static Logger LOGGER = LoggerFactory.getLogger(StringIndexOutOfBounds.class);
-
- public static void main(String[] args) {
-
- String str = "Hello World";
-
- try {
- char charAtNegativeIndex = str.charAt(-1); // Trying to access at negative index
- char charAtLengthIndex = str.charAt(11); // Trying to access at index equal to size of the string
- } catch (StringIndexOutOfBoundsException e) {
- LOGGER.error("StringIndexOutOfBoundsException caught");
- }
-
- }
-
-}
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithChain.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/LogWithChain.java
similarity index 73%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithChain.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/LogWithChain.java
index 3d66c2b535..a2eae50108 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithChain.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/LogWithChain.java
@@ -1,9 +1,9 @@
-package com.baeldung.chainedexception;
+package com.baeldung.exceptions.chainedexception;
-import com.baeldung.chainedexception.exceptions.GirlFriendOfManagerUpsetException;
-import com.baeldung.chainedexception.exceptions.ManagerUpsetException;
-import com.baeldung.chainedexception.exceptions.NoLeaveGrantedException;
-import com.baeldung.chainedexception.exceptions.TeamLeadUpsetException;
+import com.baeldung.exceptions.chainedexception.exceptions.GirlFriendOfManagerUpsetException;
+import com.baeldung.exceptions.chainedexception.exceptions.ManagerUpsetException;
+import com.baeldung.exceptions.chainedexception.exceptions.NoLeaveGrantedException;
+import com.baeldung.exceptions.chainedexception.exceptions.TeamLeadUpsetException;
public class LogWithChain {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/LogWithoutChain.java
similarity index 75%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/LogWithoutChain.java
index 7556e30663..8c37db0307 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/LogWithoutChain.java
@@ -1,9 +1,9 @@
-package com.baeldung.chainedexception;
+package com.baeldung.exceptions.chainedexception;
-import com.baeldung.chainedexception.exceptions.GirlFriendOfManagerUpsetException;
-import com.baeldung.chainedexception.exceptions.ManagerUpsetException;
-import com.baeldung.chainedexception.exceptions.NoLeaveGrantedException;
-import com.baeldung.chainedexception.exceptions.TeamLeadUpsetException;
+import com.baeldung.exceptions.chainedexception.exceptions.GirlFriendOfManagerUpsetException;
+import com.baeldung.exceptions.chainedexception.exceptions.ManagerUpsetException;
+import com.baeldung.exceptions.chainedexception.exceptions.NoLeaveGrantedException;
+import com.baeldung.exceptions.chainedexception.exceptions.TeamLeadUpsetException;
public class LogWithoutChain {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java
similarity index 82%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java
index e20c58ea5b..91537b58d4 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java
@@ -1,4 +1,4 @@
-package com.baeldung.chainedexception.exceptions;
+package com.baeldung.exceptions.chainedexception.exceptions;
public class GirlFriendOfManagerUpsetException extends Exception {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/ManagerUpsetException.java
similarity index 80%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/ManagerUpsetException.java
index e95a3921a4..351521a522 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/ManagerUpsetException.java
@@ -1,4 +1,4 @@
-package com.baeldung.chainedexception.exceptions;
+package com.baeldung.exceptions.chainedexception.exceptions;
public class ManagerUpsetException extends Exception {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/NoLeaveGrantedException.java
similarity index 80%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/NoLeaveGrantedException.java
index b9521858b3..dd84baae74 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/NoLeaveGrantedException.java
@@ -1,4 +1,4 @@
-package com.baeldung.chainedexception.exceptions;
+package com.baeldung.exceptions.chainedexception.exceptions;
public class NoLeaveGrantedException extends Exception {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/TeamLeadUpsetException.java
similarity index 80%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/TeamLeadUpsetException.java
index f874620f00..4ea8c3db7a 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/TeamLeadUpsetException.java
@@ -1,4 +1,4 @@
-package com.baeldung.chainedexception.exceptions;
+package com.baeldung.exceptions.chainedexception.exceptions;
public class TeamLeadUpsetException extends Exception {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/FileManager.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/FileManager.java
similarity index 96%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/FileManager.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/FileManager.java
index b6f4d960aa..adc1b1613c 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/FileManager.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/FileManager.java
@@ -1,4 +1,4 @@
-package com.baeldung.customexception;
+package com.baeldung.exceptions.customexception;
import java.io.File;
import java.io.FileNotFoundException;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileExtensionException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/IncorrectFileExtensionException.java
similarity index 83%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileExtensionException.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/IncorrectFileExtensionException.java
index c6dc6d6964..4e8fece145 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileExtensionException.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/IncorrectFileExtensionException.java
@@ -1,4 +1,4 @@
-package com.baeldung.customexception;
+package com.baeldung.exceptions.customexception;
public class IncorrectFileExtensionException extends RuntimeException{
private static final long serialVersionUID = 1L;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileNameException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/IncorrectFileNameException.java
similarity index 82%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileNameException.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/IncorrectFileNameException.java
index a804cadb84..f7f6a9dd8c 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileNameException.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/IncorrectFileNameException.java
@@ -1,4 +1,4 @@
-package com.baeldung.customexception;
+package com.baeldung.exceptions.customexception;
public class IncorrectFileNameException extends Exception {
private static final long serialVersionUID = 1L;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Exceptions.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/Exceptions.java
similarity index 99%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Exceptions.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/Exceptions.java
index 32d88cfd12..14483b3489 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Exceptions.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/Exceptions.java
@@ -1,4 +1,4 @@
-package com.baeldung.exceptionhandling;
+package com.baeldung.exceptions.exceptionhandling;
import java.io.File;
import java.io.FileNotFoundException;
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/MyException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/MyException.java
new file mode 100644
index 0000000000..bc2c6baffb
--- /dev/null
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/MyException.java
@@ -0,0 +1,5 @@
+package com.baeldung.exceptions.exceptionhandling;
+
+public class MyException extends Throwable {
+
+}
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Player.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/Player.java
similarity index 72%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Player.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/Player.java
index e866802fe3..1251cd58e6 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Player.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/Player.java
@@ -1,4 +1,4 @@
-package com.baeldung.exceptionhandling;
+package com.baeldung.exceptions.exceptionhandling;
public class Player {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerLoadException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/PlayerLoadException.java
similarity index 75%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerLoadException.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/PlayerLoadException.java
index d92edeebbd..432232c23e 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerLoadException.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/PlayerLoadException.java
@@ -1,4 +1,4 @@
-package com.baeldung.exceptionhandling;
+package com.baeldung.exceptions.exceptionhandling;
import java.io.IOException;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerScoreException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/PlayerScoreException.java
similarity index 71%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerScoreException.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/PlayerScoreException.java
index 299370ee86..ba2a6d74e4 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerScoreException.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/PlayerScoreException.java
@@ -1,4 +1,4 @@
-package com.baeldung.exceptionhandling;
+package com.baeldung.exceptions.exceptionhandling;
public class PlayerScoreException extends Exception {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/TimeoutException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/TimeoutException.java
similarity index 71%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/TimeoutException.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/TimeoutException.java
index 0211284e5d..0f926ccf58 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/TimeoutException.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/TimeoutException.java
@@ -1,4 +1,4 @@
-package com.baeldung.exceptionhandling;
+package com.baeldung.exceptions.exceptionhandling;
public class TimeoutException extends Exception {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalize/FinalizeObject.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalize/FinalizeObject.java
similarity index 88%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalize/FinalizeObject.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalize/FinalizeObject.java
index af0449c0da..9e5e7461ea 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalize/FinalizeObject.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalize/FinalizeObject.java
@@ -1,4 +1,4 @@
-package com.baeldung.keywords.finalize;
+package com.baeldung.exceptions.keywords.finalize;
public class FinalizeObject {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Child.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/Child.java
similarity index 78%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Child.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/Child.java
index 8615c78652..b006850199 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Child.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/Child.java
@@ -1,4 +1,4 @@
-package com.baeldung.keywords.finalkeyword;
+package com.baeldung.exceptions.keywords.finalkeyword;
public final class Child extends Parent {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/GrandChild.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/GrandChild.java
similarity index 56%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/GrandChild.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/GrandChild.java
index 1530c5037f..f8adf27914 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/GrandChild.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/GrandChild.java
@@ -1,4 +1,4 @@
-package com.baeldung.keywords.finalkeyword;
+package com.baeldung.exceptions.keywords.finalkeyword;
/*public class GrandChild extends Child {
// Compilation error
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Parent.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/Parent.java
similarity index 87%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Parent.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/Parent.java
index 5cd2996e7a..2a5d19a32f 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Parent.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/Parent.java
@@ -1,4 +1,4 @@
-package com.baeldung.keywords.finalkeyword;
+package com.baeldung.exceptions.keywords.finalkeyword;
public class Parent {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finallykeyword/FinallyExample.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finallykeyword/FinallyExample.java
similarity index 92%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finallykeyword/FinallyExample.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finallykeyword/FinallyExample.java
index 3c0aee3196..8f9d9a29d2 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finallykeyword/FinallyExample.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finallykeyword/FinallyExample.java
@@ -1,4 +1,4 @@
-package com.baeldung.keywords.finallykeyword;
+package com.baeldung.exceptions.keywords.finallykeyword;
public class FinallyExample {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/ClassWithInitErrors.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/noclassdeffounderror/ClassWithInitErrors.java
similarity index 55%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/ClassWithInitErrors.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/noclassdeffounderror/ClassWithInitErrors.java
index b5b357a322..a82f430959 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/ClassWithInitErrors.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/noclassdeffounderror/ClassWithInitErrors.java
@@ -1,4 +1,4 @@
-package com.baeldung.noclassdeffounderror;
+package com.baeldung.exceptions.noclassdeffounderror;
public class ClassWithInitErrors {
static int data = 1 / 0;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorExample.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/noclassdeffounderror/NoClassDefFoundErrorExample.java
similarity index 86%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorExample.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/noclassdeffounderror/NoClassDefFoundErrorExample.java
index 7bcefbdbd3..0dc74a9d01 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorExample.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/noclassdeffounderror/NoClassDefFoundErrorExample.java
@@ -1,4 +1,4 @@
-package com.baeldung.noclassdeffounderror;
+package com.baeldung.exceptions.noclassdeffounderror;
public class NoClassDefFoundErrorExample {
public ClassWithInitErrors getClassWithInitErrors() {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/sneakythrows/SneakyRunnable.java
similarity index 90%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/sneakythrows/SneakyRunnable.java
index 88a8696053..06b587d0e0 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/sneakythrows/SneakyRunnable.java
@@ -1,4 +1,4 @@
-package com.baeldung.sneakythrows;
+package com.baeldung.exceptions.sneakythrows;
import lombok.SneakyThrows;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/sneakythrows/SneakyThrows.java
similarity index 90%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/sneakythrows/SneakyThrows.java
index 847aaa7249..e86ef53733 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/sneakythrows/SneakyThrows.java
@@ -1,4 +1,4 @@
-package com.baeldung.sneakythrows;
+package com.baeldung.exceptions.sneakythrows;
import java.io.IOException;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/AccountHolder.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/AccountHolder.java
similarity index 74%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/AccountHolder.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/AccountHolder.java
index 91b8a3bbb0..5beac1cd04 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/AccountHolder.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/AccountHolder.java
@@ -1,4 +1,4 @@
-package com.baeldung.stackoverflowerror;
+package com.baeldung.exceptions.stackoverflowerror;
public class AccountHolder {
private String firstName;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassOne.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/ClassOne.java
similarity index 86%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassOne.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/ClassOne.java
index 3b95fd1368..e290a1fe38 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassOne.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/ClassOne.java
@@ -1,4 +1,4 @@
-package com.baeldung.stackoverflowerror;
+package com.baeldung.exceptions.stackoverflowerror;
public class ClassOne {
private int oneValue;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassTwo.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/ClassTwo.java
similarity index 86%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassTwo.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/ClassTwo.java
index 0adf075b43..fc6a89e1fb 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassTwo.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/ClassTwo.java
@@ -1,4 +1,4 @@
-package com.baeldung.stackoverflowerror;
+package com.baeldung.exceptions.stackoverflowerror;
public class ClassTwo {
private int twoValue;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java
similarity index 78%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java
index c67eeb30d1..858871cb9d 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java
@@ -1,4 +1,4 @@
-package com.baeldung.stackoverflowerror;
+package com.baeldung.exceptions.stackoverflowerror;
public class InfiniteRecursionWithTerminationCondition {
public int calculateFactorial(final int number) {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationCondition.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/RecursionWithCorrectTerminationCondition.java
similarity index 78%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationCondition.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/RecursionWithCorrectTerminationCondition.java
index 8d10c65dcc..69b1c0b5ab 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationCondition.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/RecursionWithCorrectTerminationCondition.java
@@ -1,4 +1,4 @@
-package com.baeldung.stackoverflowerror;
+package com.baeldung.exceptions.stackoverflowerror;
public class RecursionWithCorrectTerminationCondition {
public int calculateFactorial(final int number) {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursion.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/UnintendedInfiniteRecursion.java
similarity index 75%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursion.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/UnintendedInfiniteRecursion.java
index 0b7fb3cf94..c07fdcb01b 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursion.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/UnintendedInfiniteRecursion.java
@@ -1,4 +1,4 @@
-package com.baeldung.stackoverflowerror;
+package com.baeldung.exceptions.stackoverflowerror;
public class UnintendedInfiniteRecursion {
public int calculateFactorial(int number) {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/DataAccessException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/DataAccessException.java
similarity index 78%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/DataAccessException.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/DataAccessException.java
index 0b371dcedb..448c8e2213 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/DataAccessException.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/DataAccessException.java
@@ -1,4 +1,4 @@
-package com.baeldung.throwsexception;
+package com.baeldung.exceptions.throwvsthrows;
public class DataAccessException extends RuntimeException {
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/Main.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/Main.java
similarity index 95%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/Main.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/Main.java
index 17fbf5a582..dfe8fcbd5a 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/Main.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/Main.java
@@ -1,4 +1,4 @@
-package com.baeldung.throwsexception;
+package com.baeldung.exceptions.throwvsthrows;
import com.sun.mail.iap.ConnectionException;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/PersonRepository.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/PersonRepository.java
similarity index 79%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/PersonRepository.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/PersonRepository.java
index 7d8345c3c1..73453f4fc0 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/PersonRepository.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/PersonRepository.java
@@ -1,4 +1,4 @@
-package com.baeldung.throwsexception;
+package com.baeldung.exceptions.throwvsthrows;
import java.sql.SQLException;
import java.util.List;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/SimpleService.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/SimpleService.java
similarity index 90%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/SimpleService.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/SimpleService.java
index 6bb8b90bf1..605d900633 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/SimpleService.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/SimpleService.java
@@ -1,4 +1,4 @@
-package com.baeldung.throwsexception;
+package com.baeldung.exceptions.throwvsthrows;
import java.sql.SQLException;
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/TryCatch.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/TryCatch.java
similarity index 85%
rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/TryCatch.java
rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/TryCatch.java
index 2fd87f124d..f8a603f013 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/TryCatch.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/TryCatch.java
@@ -1,4 +1,4 @@
-package com.baeldung.throwsexception;
+package com.baeldung.exceptions.throwvsthrows;
import com.sun.mail.iap.ConnectionException;
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/optional/PersonRepository.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/optional/PersonRepository.java
deleted file mode 100644
index 46018faf80..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/optional/PersonRepository.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.baeldung.optional;
-
-public class PersonRepository {
-
- public String findNameById(String id) {
- return id == null ? null : "Name";
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exception/error/ErrorGeneratorUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exception/error/ErrorGeneratorUnitTest.java
deleted file mode 100644
index 6dcd0d72e0..0000000000
--- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exception/error/ErrorGeneratorUnitTest.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.baeldung.exception.error;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class ErrorGeneratorUnitTest {
-
- @Test(expected = AssertionError.class)
- public void whenError_thenIsNotCaughtByCatchException() {
- try {
- throw new AssertionError();
- } catch (Exception e) {
- Assert.fail(); // errors are not caught by catch exception
- }
- }
-
- @Test
- public void whenError_thenIsCaughtByCatchError() {
- try {
- throw new AssertionError();
- } catch (Error e) {
- // caught! -> test pass
- }
- }
-}
\ No newline at end of file
diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exception/numberformat/NumberFormatExceptionUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exception/numberformat/NumberFormatExceptionUnitTest.java
deleted file mode 100644
index cb26bf451a..0000000000
--- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exception/numberformat/NumberFormatExceptionUnitTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package com.baeldung.exception.numberformat;
-
-import static org.junit.Assert.assertEquals;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.text.NumberFormat;
-import java.text.ParseException;
-import java.util.Locale;
-import java.util.logging.Logger;
-
-import org.junit.Test;
-
-/**
- * A set of examples tested to show cases where NumberFormatException is thrown and not thrown.
- */
-public class NumberFormatExceptionUnitTest {
-
- Logger LOG = Logger.getLogger(NumberFormatExceptionUnitTest.class.getName());
-
- /* ---INTEGER FAIL CASES--- */
- @Test(expected = NumberFormatException.class)
- public void givenByteConstructor_whenAlphabetAsInput_thenFail() {
- Byte byteInt = new Byte("one");
- }
-
- @Test(expected = NumberFormatException.class)
- public void givenShortConstructor_whenSpaceInInput_thenFail() {
- Short shortInt = new Short("2 ");
- }
-
- @Test(expected = NumberFormatException.class)
- public void givenParseIntMethod_whenSpaceInInput_thenFail() {
- Integer aIntPrim = Integer.parseInt("6000 ");
- }
-
- @Test(expected = NumberFormatException.class)
- public void givenParseIntMethod_whenUnderscoreInInput_thenFail() {
- int bIntPrim = Integer.parseInt("_6000");
- }
-
- @Test(expected = NumberFormatException.class)
- public void givenIntegerValueOfMethod_whenCommaInInput_thenFail() {
- Integer cIntPrim = Integer.valueOf("6,000");
- }
-
- @Test(expected = NumberFormatException.class)
- public void givenBigIntegerConstructor_whenDecimalInInput_thenFail() {
- BigInteger bigInteger = new BigInteger("4.0");
- }
-
- @Test(expected = NumberFormatException.class)
- public void givenDecodeMethod_whenAlphabetInInput_thenFail() {
- Long decodedLong = Long.decode("64403L");
- }
-
- /* ---INTEGER PASS CASES--- */
- @Test
- public void givenInvalidNumberInputs_whenOptimized_thenPass() {
- Byte byteInt = new Byte("1");
- assertEquals(1, byteInt.intValue());
-
- Short shortInt = new Short("2 ".trim());
- assertEquals(2, shortInt.intValue());
-
- Integer aIntObj = Integer.valueOf("6");
- assertEquals(6, aIntObj.intValue());
-
- BigInteger bigInteger = new BigInteger("4");
- assertEquals(4, bigInteger.intValue());
-
- int aIntPrim = Integer.parseInt("6000 ".trim());
- assertEquals(6000, aIntPrim);
-
- int bIntPrim = Integer.parseInt("_6000".replaceAll("_", ""));
- assertEquals(6000, bIntPrim);
-
- int cIntPrim = Integer.parseInt("-6000");
- assertEquals(-6000, cIntPrim);
-
- Long decodeInteger = Long.decode("644032334");
- assertEquals(644032334L, decodeInteger.longValue());
- }
-
- /* ---DOUBLE FAIL CASES--- */
- @Test(expected = NumberFormatException.class)
- public void givenFloatConstructor_whenAlphabetInInput_thenFail() {
- Float floatDecimalObj = new Float("one.1");
- }
-
- @Test(expected = NumberFormatException.class)
- public void givenDoubleConstructor_whenAlphabetInInput_thenFail() {
- Double doubleDecimalObj = new Double("two.2");
- }
-
- @Test(expected = NumberFormatException.class)
- public void givenBigDecimalConstructor_whenSpecialCharsInInput_thenFail() {
- BigDecimal bigDecimalObj = new BigDecimal("3_0.3");
- }
-
- @Test(expected = NumberFormatException.class)
- public void givenParseDoubleMethod_whenCommaInInput_thenFail() {
- double aDoublePrim = Double.parseDouble("4000,1");
- }
-
- /* ---DOUBLE PASS CASES--- */
- @Test
- public void givenDoubleConstructor_whenDecimalInInput_thenPass() {
- Double doubleDecimalObj = new Double("2.2");
- assertEquals(2.2, doubleDecimalObj.doubleValue(), 0);
- }
-
- @Test
- public void givenDoubleValueOfMethod_whenMinusInInput_thenPass() {
- Double aDoubleObj = Double.valueOf("-6000");
- assertEquals(-6000, aDoubleObj.doubleValue(), 0);
- }
-
- @Test
- public void givenUsDecimalNumber_whenParsedWithNumberFormat_thenPass() throws ParseException {
- Number parsedNumber = parseNumberWithLocale("4000.1", Locale.US);
- assertEquals(4000.1, parsedNumber);
- assertEquals(4000.1, parsedNumber.doubleValue(), 0);
- assertEquals(4000, parsedNumber.intValue());
- }
-
- /**
- * In most European countries (for example, France), comma is used as decimal in place of period.
- * @throws ParseException if the input string contains special characters other than comma or decimal.
- * In this test case, anything after decimal (period) is dropped when a European locale is set.
- */
- @Test
- public void givenEuDecimalNumberHasComma_whenParsedWithNumberFormat_thenPass() throws ParseException {
- Number parsedNumber = parseNumberWithLocale("4000,1", Locale.FRANCE);
- LOG.info("Number parsed is: " + parsedNumber);
- assertEquals(4000.1, parsedNumber);
- assertEquals(4000.1, parsedNumber.doubleValue(), 0);
- assertEquals(4000, parsedNumber.intValue());
- }
-
- /**
- * Converts a string into a number retaining all decimals, and symbols valid in a locale.
- * @param number the input string for a number.
- * @param locale the locale to consider while parsing a number.
- * @return the generic number object which can represent multiple number types.
- * @throws ParseException when input contains invalid characters.
- */
- private Number parseNumberWithLocale(String number, Locale locale) throws ParseException {
- locale = locale == null ? Locale.getDefault() : locale;
- NumberFormat numberFormat = NumberFormat.getInstance(locale);
- return numberFormat.parse(number);
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/CheckedUncheckedExceptionsUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/CheckedUncheckedExceptionsUnitTest.java
deleted file mode 100644
index d82b1349d8..0000000000
--- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/CheckedUncheckedExceptionsUnitTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.baeldung.exceptions;
-
-import static org.junit.jupiter.api.Assertions.assertThrows;
-
-import java.io.FileNotFoundException;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-/**
- * Tests the {@link CheckedUncheckedExceptions}.
- */
-public class CheckedUncheckedExceptionsUnitTest {
-
- @Test
- public void whenFileNotExist_thenThrowException() {
- assertThrows(FileNotFoundException.class, () -> {
- CheckedUncheckedExceptions.checkedExceptionWithThrows();
- });
- }
-
- @Test
- public void whenTryCatchExcetpion_thenSuccess() {
- try {
- CheckedUncheckedExceptions.checkedExceptionWithTryCatch();
- } catch (Exception e) {
- Assertions.fail(e.getMessage());
- }
- }
-
- @Test
- public void whenDivideByZero_thenThrowException() {
- assertThrows(ArithmeticException.class, () -> {
- CheckedUncheckedExceptions.divideByZero();
- });
- }
-
- @Test
- public void whenInvalidFile_thenThrowException() {
-
- assertThrows(IncorrectFileNameException.class, () -> {
- CheckedUncheckedExceptions.checkFile("wrongFileName.txt");
- });
- }
-
- @Test
- public void whenNullOrEmptyFile_thenThrowException() {
- assertThrows(NullOrEmptyException.class, () -> {
- CheckedUncheckedExceptions.checkFile(null);
- });
- assertThrows(NullOrEmptyException.class, () -> {
- CheckedUncheckedExceptions.checkFile("");
- });
- }
-}
diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/GlobalExceptionHandlerUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/GlobalExceptionHandlerUnitTest.java
deleted file mode 100644
index 394de9c576..0000000000
--- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/GlobalExceptionHandlerUnitTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.baeldung.exceptions;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-import org.slf4j.LoggerFactory;
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.classic.spi.LoggingEvent;
-import ch.qos.logback.core.Appender;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.verify;
-
-@RunWith(MockitoJUnitRunner.class)
-public class GlobalExceptionHandlerUnitTest {
-
- @Mock
- private Appender mockAppender;
-
- @Captor
- private ArgumentCaptor captorLoggingEvent;
-
- @Before
- public void setup() {
- final Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
- logger.addAppender(mockAppender);
-
- Handler globalExceptionHandler = new Handler();
- Thread.setDefaultUncaughtExceptionHandler(globalExceptionHandler);
- }
-
- @After
- public void teardown() {
- final Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
- logger.detachAppender(mockAppender);
- }
-
- @Test
- public void whenArithmeticException_thenUseUncaughtExceptionHandler() throws InterruptedException {
-
- Thread globalExceptionHandlerThread = new Thread() {
- public void run() {
- GlobalExceptionHandler globalExceptionHandlerObj = new GlobalExceptionHandler();
- globalExceptionHandlerObj.performArithmeticOperation(99, 0);
- }
- };
-
- globalExceptionHandlerThread.start();
- globalExceptionHandlerThread.join();
-
- verify(mockAppender).doAppend(captorLoggingEvent.capture());
- LoggingEvent loggingEvent = captorLoggingEvent.getValue();
-
- assertThat(loggingEvent.getLevel()).isEqualTo(Level.INFO);
- assertThat(loggingEvent.getFormattedMessage()).isEqualTo("Unhandled exception caught!");
- }
-
-}
diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/RootCauseFinderUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/RootCauseFinderUnitTest.java
deleted file mode 100644
index 5d0f3b9c3e..0000000000
--- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/RootCauseFinderUnitTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package com.baeldung.exceptions;
-
-import com.google.common.base.Throwables;
-import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-import java.time.LocalDate;
-import java.time.format.DateTimeParseException;
-import java.time.temporal.ChronoUnit;
-
-import static com.baeldung.exceptions.RootCauseFinder.*;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-/**
- * Tests the {@link RootCauseFinder}.
- */
-public class RootCauseFinderUnitTest {
-
- @Test
- public void givenBirthDate_whenCalculatingAge_thenAgeReturned() {
- try {
- int age = AgeCalculator.calculateAge("1990-01-01");
- Assertions.assertEquals(1990, LocalDate
- .now()
- .minus(age, ChronoUnit.YEARS)
- .getYear());
- } catch (CalculationException e) {
- Assertions.fail(e.getMessage());
- }
- }
-
- @Test
- public void givenWrongFormatDate_whenFindingRootCauseUsingJava_thenRootCauseFound() {
- try {
- AgeCalculator.calculateAge("010102");
- } catch (CalculationException ex) {
- assertTrue(findCauseUsingPlainJava(ex) instanceof DateTimeParseException);
- }
- }
-
- @Test
- public void givenOutOfRangeDate_whenFindingRootCauseUsingJava_thenRootCauseFound() {
- try {
- AgeCalculator.calculateAge("2020-04-04");
- } catch (CalculationException ex) {
- assertTrue(findCauseUsingPlainJava(ex) instanceof DateOutOfRangeException);
- }
- }
-
- @Test
- public void givenNullDate_whenFindingRootCauseUsingJava_thenRootCauseFound() {
- try {
- AgeCalculator.calculateAge(null);
- } catch (Exception ex) {
- assertTrue(findCauseUsingPlainJava(ex) instanceof IllegalArgumentException);
- }
- }
-
- @Test
- public void givenWrongFormatDate_whenFindingRootCauseUsingApacheCommons_thenRootCauseFound() {
- try {
- AgeCalculator.calculateAge("010102");
- } catch (CalculationException ex) {
- assertTrue(ExceptionUtils.getRootCause(ex) instanceof DateTimeParseException);
- }
- }
-
- @Test
- public void givenOutOfRangeDate_whenFindingRootCauseUsingApacheCommons_thenRootCauseFound() {
- try {
- AgeCalculator.calculateAge("2020-04-04");
- } catch (CalculationException ex) {
- assertTrue(ExceptionUtils.getRootCause(ex) instanceof DateOutOfRangeException);
- }
- }
-
- @Test
- public void givenNullDate_whenFindingRootCauseUsingApacheCommons_thenRootCauseNotFound() {
- try {
- AgeCalculator.calculateAge(null);
- } catch (Exception ex) {
- assertTrue(ExceptionUtils.getRootCause(ex) instanceof IllegalArgumentException);
- }
- }
-
- @Test
- public void givenWrongFormatDate_whenFindingRootCauseUsingGuava_thenRootCauseFound() {
- try {
- AgeCalculator.calculateAge("010102");
- } catch (CalculationException ex) {
- assertTrue(Throwables.getRootCause(ex) instanceof DateTimeParseException);
- }
- }
-
- @Test
- public void givenOutOfRangeDate_whenFindingRootCauseUsingGuava_thenRootCauseFound() {
- try {
- AgeCalculator.calculateAge("2020-04-04");
- } catch (CalculationException ex) {
- assertTrue(Throwables.getRootCause(ex) instanceof DateOutOfRangeException);
- }
- }
-
- @Test
- public void givenNullDate_whenFindingRootCauseUsingGuava_thenRootCauseFound() {
- try {
- AgeCalculator.calculateAge(null);
- } catch (Exception ex) {
- assertTrue(Throwables.getRootCause(ex) instanceof IllegalArgumentException);
- }
- }
-
-}
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/classnotfoundexception/ClassNotFoundExceptionUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/classnotfoundexception/ClassNotFoundExceptionUnitTest.java
similarity index 84%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/classnotfoundexception/ClassNotFoundExceptionUnitTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/classnotfoundexception/ClassNotFoundExceptionUnitTest.java
index 59605fb1c9..9311a9d886 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/classnotfoundexception/ClassNotFoundExceptionUnitTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/classnotfoundexception/ClassNotFoundExceptionUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.classnotfoundexception;
+package com.baeldung.exceptions.classnotfoundexception;
import org.junit.Test;
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileExtensionExceptionUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/customexception/IncorrectFileExtensionExceptionUnitTest.java
similarity index 95%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileExtensionExceptionUnitTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/customexception/IncorrectFileExtensionExceptionUnitTest.java
index 230698f719..80787daaaa 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileExtensionExceptionUnitTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/customexception/IncorrectFileExtensionExceptionUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.customexception;
+package com.baeldung.exceptions.customexception;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileNameExceptionUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/customexception/IncorrectFileNameExceptionUnitTest.java
similarity index 92%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileNameExceptionUnitTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/customexception/IncorrectFileNameExceptionUnitTest.java
index acb05eb763..8e135c1cec 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileNameExceptionUnitTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/customexception/IncorrectFileNameExceptionUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.customexception;
+package com.baeldung.exceptions.customexception;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/exceptionhandling/ExceptionsUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/exceptionhandling/ExceptionsUnitTest.java
similarity index 97%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/exceptionhandling/ExceptionsUnitTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/exceptionhandling/ExceptionsUnitTest.java
index 29c690133d..3551de3631 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/exceptionhandling/ExceptionsUnitTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/exceptionhandling/ExceptionsUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.exceptionhandling;
+package com.baeldung.exceptions.exceptionhandling;
import org.junit.Test;
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java
similarity index 85%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java
index 521c50098a..135a51f9dd 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.noclassdeffounderror;
+package com.baeldung.exceptions.noclassdeffounderror;
import org.junit.Test;
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyRunnableUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/sneakythrows/SneakyRunnableUnitTest.java
similarity index 89%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyRunnableUnitTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/sneakythrows/SneakyRunnableUnitTest.java
index 8d8e4f14fe..086c4eaef0 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyRunnableUnitTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/sneakythrows/SneakyRunnableUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.sneakythrows;
+package com.baeldung.exceptions.sneakythrows;
import org.junit.Test;
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyThrowsUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/sneakythrows/SneakyThrowsUnitTest.java
similarity index 89%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyThrowsUnitTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/sneakythrows/SneakyThrowsUnitTest.java
index da1b2e617b..3b70128a9b 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyThrowsUnitTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/sneakythrows/SneakyThrowsUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.sneakythrows;
+package com.baeldung.exceptions.sneakythrows;
import org.junit.Test;
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/AccountHolderManualTest.java
similarity index 82%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/AccountHolderManualTest.java
index 180b7723ac..dac8698bf8 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/AccountHolderManualTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.stackoverflowerror;
+package com.baeldung.exceptions.stackoverflowerror;
import org.junit.Test;
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/CyclicDependancyManualTest.java
similarity index 81%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/CyclicDependancyManualTest.java
index 95164ac935..db6b1d45f8 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/CyclicDependancyManualTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.stackoverflowerror;
+package com.baeldung.exceptions.stackoverflowerror;
import org.junit.Test;
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java
similarity index 95%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java
index ccf8c25271..2c7289cd5c 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.stackoverflowerror;
+package com.baeldung.exceptions.stackoverflowerror;
import org.junit.Test;
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java
similarity index 89%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java
index 40c2c4799e..e7fb0874ea 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.stackoverflowerror;
+package com.baeldung.exceptions.stackoverflowerror;
import org.junit.Test;
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java
similarity index 94%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java
index f4e2e5221a..0f1d71034d 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.stackoverflowerror;
+package com.baeldung.exceptions.stackoverflowerror;
import org.junit.Test;
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/throwsexception/SimpleServiceUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/throwvsthrows/SimpleServiceUnitTest.java
similarity index 92%
rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/throwsexception/SimpleServiceUnitTest.java
rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/throwvsthrows/SimpleServiceUnitTest.java
index b9a658a960..87f6224217 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/throwsexception/SimpleServiceUnitTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/throwvsthrows/SimpleServiceUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.throwsexception;
+package com.baeldung.exceptions.throwvsthrows;
import org.junit.jupiter.api.Test;
diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java
deleted file mode 100644
index 32879aed0c..0000000000
--- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.baeldung.java8;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.Date;
-import java.util.Scanner;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class JavaTryWithResourcesLongRunningUnitTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(JavaTryWithResourcesLongRunningUnitTest.class);
-
- private static final String TEST_STRING_HELLO_WORLD = "Hello World";
- private Date resource1Date, resource2Date;
-
- // tests
-
- /* Example for using Try_with_resources */
- @Test
- public void whenWritingToStringWriter_thenCorrectlyWritten() {
- final StringWriter sw = new StringWriter();
- try (PrintWriter pw = new PrintWriter(sw, true)) {
- pw.print(TEST_STRING_HELLO_WORLD);
- }
-
- Assert.assertEquals(sw.getBuffer()
- .toString(), TEST_STRING_HELLO_WORLD);
- }
-
- /* Example for using multiple resources */
- @Test
- public void givenStringToScanner_whenWritingToStringWriter_thenCorrectlyWritten() {
-
- final StringWriter sw = new StringWriter();
- try (Scanner sc = new Scanner(TEST_STRING_HELLO_WORLD); PrintWriter pw = new PrintWriter(sw, true)) {
- while (sc.hasNext()) {
- pw.print(sc.nextLine());
- }
- }
-
- Assert.assertEquals(sw.getBuffer()
- .toString(), TEST_STRING_HELLO_WORLD);
- }
-
- /* Example to show order in which the resources are closed */
- @Test
- public void whenFirstAutoClosableResourceIsinitializedFirst_thenFirstAutoClosableResourceIsReleasedFirst() throws Exception {
- try (AutoCloseableResourcesFirst af = new AutoCloseableResourcesFirst(); AutoCloseableResourcesSecond as = new AutoCloseableResourcesSecond()) {
- af.doSomething();
- as.doSomething();
- }
- Assert.assertTrue(resource1Date.after(resource2Date));
- }
-
- class AutoCloseableResourcesFirst implements AutoCloseable {
- public AutoCloseableResourcesFirst() {
- LOG.debug("Constructor -> AutoCloseableResources_First");
- }
-
- public void doSomething() {
- LOG.debug("Something -> AutoCloseableResources_First");
- }
-
- @Override
- public void close() throws Exception {
- LOG.debug("Closed AutoCloseableResources_First");
- resource1Date = new Date();
- }
- }
-
- class AutoCloseableResourcesSecond implements AutoCloseable {
- public AutoCloseableResourcesSecond() {
- LOG.debug("Constructor -> AutoCloseableResources_Second");
- }
-
- public void doSomething() {
- LOG.debug("Something -> AutoCloseableResources_Second");
- }
-
- @Override
- public void close() throws Exception {
- LOG.debug("Closed AutoCloseableResources_Second");
- resource2Date = new Date();
- Thread.sleep(10000);
- }
- }
-
-}
\ No newline at end of file
diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/optional/PersonRepositoryUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/optional/PersonRepositoryUnitTest.java
deleted file mode 100644
index 4efa625ccd..0000000000
--- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/optional/PersonRepositoryUnitTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.baeldung.optional;
-
-import org.junit.Test;
-
-import java.util.Optional;
-
-import static org.junit.jupiter.api.Assertions.assertAll;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-
-public class PersonRepositoryUnitTest {
-
- PersonRepository personRepository = new PersonRepository();
-
- @Test
- public void whenIdIsNull_thenExceptionIsThrown() {
- assertThrows(IllegalArgumentException.class,
- () ->
- Optional
- .ofNullable(personRepository.findNameById(null))
- .orElseThrow(IllegalArgumentException::new));
- }
-
- @Test
- public void whenIdIsNonNull_thenNoExceptionIsThrown() {
- assertAll(
- () ->
- Optional
- .ofNullable(personRepository.findNameById("id"))
- .orElseThrow(RuntimeException::new));
- }
-
- @Test
- public void whenIdNonNull_thenReturnsNameUpperCase() {
- String name = Optional
- .ofNullable(personRepository.findNameById("id"))
- .map(String::toUpperCase)
- .orElseThrow(RuntimeException::new);
-
- assertEquals("NAME", name);
- }
-
-}
\ No newline at end of file
diff --git a/core-java-modules/core-java-lang/src/test/resources/correctFileNameWithoutProperExtension b/core-java-modules/core-java-exceptions/src/test/resources/correctFileNameWithoutProperExtension
similarity index 100%
rename from core-java-modules/core-java-lang/src/test/resources/correctFileNameWithoutProperExtension
rename to core-java-modules/core-java-exceptions/src/test/resources/correctFileNameWithoutProperExtension
diff --git a/core-java-modules/core-java-lang/README.md b/core-java-modules/core-java-lang/README.md
index ac91751600..6e619c1c4e 100644
--- a/core-java-modules/core-java-lang/README.md
+++ b/core-java-modules/core-java-lang/README.md
@@ -4,30 +4,22 @@
### Relevant Articles:
-- [Generate equals() and hashCode() with Eclipse](http://www.baeldung.com/java-eclipse-equals-and-hashcode)
-- [Chained Exceptions in Java](http://www.baeldung.com/java-chained-exceptions)
-- [Iterating Over Enum Values in Java](http://www.baeldung.com/java-enum-iteration)
-- [Java Double Brace Initialization](http://www.baeldung.com/java-double-brace-initialization)
-- [Guide to the Diamond Operator in Java](http://www.baeldung.com/java-diamond-operator)
-- [Comparator and Comparable in Java](http://www.baeldung.com/java-comparator-comparable)
-- [The Java continue and break Keywords](http://www.baeldung.com/java-continue-and-break)
-- [Nested Classes in Java](http://www.baeldung.com/java-nested-classes)
-- [A Guide to Inner Interfaces in Java](http://www.baeldung.com/java-inner-interfaces)
-- [Recursion In Java](http://www.baeldung.com/java-recursion)
-- [A Guide to the finalize Method in Java](http://www.baeldung.com/java-finalize)
-- [Infinite Loops in Java](http://www.baeldung.com/infinite-loops-java)
-- [Quick Guide to java.lang.System](http://www.baeldung.com/java-lang-system)
-- [Using Java Assertions](http://www.baeldung.com/java-assert)
-- [ClassNotFoundException vs NoClassDefFoundError](http://www.baeldung.com/java-classnotfoundexception-and-noclassdeffounderror)
-- [The StackOverflowError in Java](http://www.baeldung.com/java-stack-overflow-error)
-- [Create a Custom Exception in Java](http://www.baeldung.com/java-new-custom-exception)
-- [Exception Handling in Java](http://www.baeldung.com/java-exceptions)
-- [Differences Between Final, Finally and Finalize in Java](https://www.baeldung.com/java-final-finally-finalize)
+- [Generate equals() and hashCode() with Eclipse](https://www.baeldung.com/java-eclipse-equals-and-hashcode)
+- [Iterating Over Enum Values in Java](https://www.baeldung.com/java-enum-iteration)
+- [Java Double Brace Initialization](https://www.baeldung.com/java-double-brace-initialization)
+- [Guide to the Diamond Operator in Java](https://www.baeldung.com/java-diamond-operator)
+- [Comparator and Comparable in Java](https://www.baeldung.com/java-comparator-comparable)
+- [The Java continue and break Keywords](https://www.baeldung.com/java-continue-and-break)
+- [Nested Classes in Java](https://www.baeldung.com/java-nested-classes)
+- [A Guide to Inner Interfaces in Java](https://www.baeldung.com/java-inner-interfaces)
+- [Recursion In Java](https://www.baeldung.com/java-recursion)
+- [A Guide to the finalize Method in Java](https://www.baeldung.com/java-finalize)
+- [Infinite Loops in Java](https://www.baeldung.com/infinite-loops-java)
+- [Quick Guide to java.lang.System](https://www.baeldung.com/java-lang-system)
+- [Using Java Assertions](https://www.baeldung.com/java-assert)
- [Static and Dynamic Binding in Java](https://www.baeldung.com/java-static-dynamic-binding)
-- [Difference Between Throw and Throws in Java](https://www.baeldung.com/java-throw-throws)
- [Synthetic Constructs in Java](https://www.baeldung.com/java-synthetic)
- [How to Separate Double into Integer and Decimal Parts](https://www.baeldung.com/java-separate-double-into-integer-decimal-parts)
-- [“Sneaky Throws” in Java](http://www.baeldung.com/java-sneaky-throws)
- [Retrieving a Class Name in Java](https://www.baeldung.com/java-class-name)
- [Java Compound Operators](https://www.baeldung.com/java-compound-operators)
- [Guide to Java Packages](https://www.baeldung.com/java-packages)
diff --git a/core-java-modules/core-java-lang/pom.xml b/core-java-modules/core-java-lang/pom.xml
index 8311636873..1a2b86f872 100644
--- a/core-java-modules/core-java-lang/pom.xml
+++ b/core-java-modules/core-java-lang/pom.xml
@@ -43,12 +43,6 @@
log4j-over-slf4j
${org.slf4j.version}
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
org.assertj
@@ -56,11 +50,6 @@
${assertj-core.version}
test
-
- javax.mail
- mail
- ${javax.mail.version}
-
@@ -75,9 +64,6 @@
2.8.2
-
- 1.5.0-b01
-
3.10.0
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/MyException.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/MyException.java
deleted file mode 100644
index c2908b7278..0000000000
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/MyException.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.baeldung.exceptionhandling;
-
-public class MyException extends Throwable {
-
-}
diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml
index 082ffbef53..68ece1c473 100644
--- a/core-java-modules/pom.xml
+++ b/core-java-modules/pom.xml
@@ -15,7 +15,6 @@
pre-jpms
- core-java-exceptions
core-java-optional
core-java-lang-operators
core-java-networking-2
diff --git a/pom.xml b/pom.xml
index 4f40f8261f..733aaad056 100644
--- a/pom.xml
+++ b/pom.xml
@@ -415,6 +415,7 @@
core-java-modules/core-java-io-files
core-java-modules/core-java-nio
core-java-modules/core-java-security
+ core-java-modules/core-java-exceptions
core-java-modules/core-java-lang-syntax
core-java-modules/core-java-lang-syntax-2
core-java-modules/core-java-lang
@@ -1162,6 +1163,7 @@
core-java-modules/core-java-io-files
core-java-modules/core-java-nio
core-java-modules/core-java-security
+ core-java-modules/core-java-exceptions
core-java-modules/core-java-lang-syntax
core-java-modules/core-java-lang-syntax-2
core-java-modules/core-java-lang