diff --git a/core-java/.gitignore b/core-java/.gitignore index 464f7e5e38..251a8755bd 100644 --- a/core-java/.gitignore +++ b/core-java/.gitignore @@ -16,3 +16,7 @@ *.txt /bin/ /temp + +#IntelliJ specific +.idea +*.iml \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/chainedexception/LogWithChain.java b/core-java/src/main/java/com/baeldung/chainedexception/LogWithChain.java new file mode 100644 index 0000000000..8542e8c7ac --- /dev/null +++ b/core-java/src/main/java/com/baeldung/chainedexception/LogWithChain.java @@ -0,0 +1,44 @@ +package com.baeldung.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; + +public class LogWithChain { + + public static void main(String[] args) throws Exception { + getLeave(); + } + + private static void getLeave() throws NoLeaveGrantedException { + try { + howIsTeamLead(); + } catch (TeamLeadUpsetException e) { + throw new NoLeaveGrantedException("Leave not sanctioned.", e); + } + } + + private static void howIsTeamLead() throws TeamLeadUpsetException { + try { + howIsManager(); + } catch (ManagerUpsetException e) { + throw new TeamLeadUpsetException( + "Team lead is not in good mood", e); + } + } + + private static void howIsManager() throws ManagerUpsetException { + try { + howIsGirlFriendOfManager(); + } catch (GirlFriendOfManagerUpsetException e) { + throw new ManagerUpsetException("Manager is in bad mood", e); + } + } + + private static void howIsGirlFriendOfManager() + throws GirlFriendOfManagerUpsetException { + throw new GirlFriendOfManagerUpsetException( + "Girl friend of manager is in bad mood"); + } +} diff --git a/core-java/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java b/core-java/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java new file mode 100644 index 0000000000..a06a324f03 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java @@ -0,0 +1,47 @@ +package com.baeldung.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; + +public class LogWithoutChain { + + public static void main(String[] args) throws Exception { + getLeave(); + } + + private static void getLeave() throws NoLeaveGrantedException { + try { + howIsTeamLead(); + } catch (TeamLeadUpsetException e) { + e.printStackTrace(); + throw new NoLeaveGrantedException("Leave not sanctioned."); + } + } + + private static void howIsTeamLead() throws TeamLeadUpsetException { + try { + howIsManager(); + } catch (ManagerUpsetException e) { + e.printStackTrace(); + throw new TeamLeadUpsetException( + "Team lead is not in good mood"); + } + } + + private static void howIsManager() throws ManagerUpsetException { + try { + howIsGirlFriendOfManager(); + } catch (GirlFriendOfManagerUpsetException e) { + e.printStackTrace(); + throw new ManagerUpsetException("Manager is in bad mood"); + } + } + + private static void howIsGirlFriendOfManager() + throws GirlFriendOfManagerUpsetException { + throw new GirlFriendOfManagerUpsetException( + "Girl friend of manager is in bad mood"); + } +} diff --git a/core-java/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java b/core-java/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java new file mode 100644 index 0000000000..e20c58ea5b --- /dev/null +++ b/core-java/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java @@ -0,0 +1,12 @@ +package com.baeldung.chainedexception.exceptions; + +public class GirlFriendOfManagerUpsetException extends Exception { + + public GirlFriendOfManagerUpsetException(String message, Throwable cause) { + super(message, cause); + } + + public GirlFriendOfManagerUpsetException(String message) { + super(message); + } +} diff --git a/core-java/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java b/core-java/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java new file mode 100644 index 0000000000..e95a3921a4 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java @@ -0,0 +1,12 @@ +package com.baeldung.chainedexception.exceptions; + +public class ManagerUpsetException extends Exception { + + public ManagerUpsetException(String message, Throwable cause) { + super(message, cause); + } + + public ManagerUpsetException(String message) { + super(message); + } +} diff --git a/core-java/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java b/core-java/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java new file mode 100644 index 0000000000..b9521858b3 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java @@ -0,0 +1,12 @@ +package com.baeldung.chainedexception.exceptions; + +public class NoLeaveGrantedException extends Exception { + + public NoLeaveGrantedException(String message, Throwable cause) { + super(message, cause); + } + + public NoLeaveGrantedException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java b/core-java/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java new file mode 100644 index 0000000000..f874620f00 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java @@ -0,0 +1,12 @@ +package com.baeldung.chainedexception.exceptions; + +public class TeamLeadUpsetException extends Exception { + + public TeamLeadUpsetException(String message, Throwable cause) { + super(message, cause); + } + + public TeamLeadUpsetException(String message) { + super(message); + } +}