1 /*
2 * Copyright (c) 2021-2023. Roland T. Lichti, Kaiserpfalz EDV-Service.
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 */
17
18 package de.kaiserpfalzedv.commons.api;
19
20 import lombok.Getter;
21 import lombok.ToString;
22
23 import java.util.UUID;
24
25 /**
26 * The base class for all unchecked exceptions of the KP RPG Services
27 *
28 * @author klenkes74 {@literal <rlichti@kaiserpfalz-edv.de>}
29 * @since 2.0.0 2021-05-24
30 */
31 @Getter
32 @ToString(callSuper = true)
33 public abstract class BaseSystemException extends RuntimeException {
34 /**
35 * A unique ID for this exception.
36 */
37 private final UUID uuid = UUID.randomUUID();
38
39 /**
40 * Constructs a new exception with the specified detail message. The
41 * cause is not initialized, and may subsequently be initialized by
42 * a call to {@link #initCause}.
43 *
44 * @param message the detail message. The detail message is saved for
45 * later retrieval by the {@link #getMessage()} method.
46 * @since 2.0.0 2021-05-24
47 */
48 public BaseSystemException(final String message) {
49 super(message);
50 }
51
52 /**
53 * Constructs a new exception with the specified detail message and
54 * cause. <p>Note that the detail message associated with
55 * {@code cause} is <i>not</i> automatically incorporated in
56 * this exception's detail message.
57 *
58 * @param message the detail message (which is saved for later retrieval
59 * by the {@link #getMessage()} method).
60 * @param cause the cause (which is saved for later retrieval by the
61 * {@link #getCause()} method). (A {@code null} value is
62 * permitted, and indicates that the cause is nonexistent or
63 * unknown.)
64 * @since 2.0.0 2021-05-24
65 */
66 public BaseSystemException(final String message, final Throwable cause) {
67 super(message, cause);
68 }
69
70 /**
71 * Constructs a new exception with the specified cause and a detail
72 * message of {@code (cause==null ? null : cause.toString())} (which
73 * typically contains the class and detail message of {@code cause}).
74 * This constructor is useful for exceptions that are little more than
75 * wrappers for other throwables (for example, {@link
76 * java.security.PrivilegedActionException}).
77 *
78 * @param cause the cause (which is saved for later retrieval by the
79 * {@link #getCause()} method). (A {@code null} value is
80 * permitted, and indicates that the cause is nonexistent or
81 * unknown.)
82 * @since 2.0.0 2021-05-24
83 */
84 public BaseSystemException(final Throwable cause) {
85 super(cause);
86 }
87
88 /**
89 * Constructs a new exception with the specified detail message, cause, suppression enabled or disabled, and
90 * writable stack trace enabled or disabled.
91 *
92 * @param message the detail message.
93 * @param cause the cause. (A {@code null} value is permitted,
94 * and indicates that the cause is nonexistent or unknown.)
95 * @param enableSuppression controls if suppression is enabled
96 * or disabled
97 * @param writableStackTrace controls if the stack trace should
98 * be writable
99 * @since 2.0.0 2021-05-24
100 */
101 public BaseSystemException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) {
102 super(message, cause, enableSuppression, writableStackTrace);
103 }
104 }