Files
snippets/multi-types-exception.code-snippets
2025-04-17 15:56:06 +08:00

87 lines
3.2 KiB
Plaintext

{
"Multi-types Exception": {
"scope": "java",
"prefix": "multi-types-exception",
"body": [
"public final class ${2:$TM_FILENAME_BASE}",
"\t\textends ${3|RuntimeException,Exception,BizException,SysException|}",
"\t\timplements MultiTypesException<${2:$TM_FILENAME_BASE}, ${2:$TM_FILENAME_BASE}.Type> {",
"\tprivate static final long serialVersionUID = ${4:${RANDOM/(0)//}$CURRENT_DATE$CURRENT_MONTH$CURRENT_YEAR_SHORT$CURRENT_SECOND$CURRENT_MINUTE$CURRENT_HOUR}L;",
"",
"\tprivate final ${1|@NonNull ,@Nonnull |}Type type;",
"",
"\tprivate ${2:$TM_FILENAME_BASE}(${1|@NonNull ,@Nonnull |}Type type) {",
"\t\tsuper(type.getDefaultMessage());",
"\t\tthis.type = type;",
"\t}",
"",
"\tprivate ${2:$TM_FILENAME_BASE}(${1|@NonNull ,@Nonnull |}Type type, @Nullable String msg) {",
"\t\tsuper(msg);",
"\t\tthis.type = type;",
"\t}",
"",
"\tprivate ${2:$TM_FILENAME_BASE}(${1|@NonNull ,@Nonnull |}Type type, @Nullable Throwable cause) {",
"\t\tsuper(cause);",
"\t\tthis.type = type;",
"\t}",
"",
"\tprivate ${2:$TM_FILENAME_BASE}(${1|@NonNull ,@Nonnull |}Type type, @Nullable String msg, @Nullable Throwable cause) {",
"\t\tsuper(msg, cause);",
"\t\tthis.type = type;",
"\t}",
"",
"\t@Override",
"\tpublic ${1|@NonNull ,@Nonnull |}Type getType() {",
"\t\treturn type;",
"\t}",
"",
"\tpublic enum Type implements ExceptionType<${2:$TM_FILENAME_BASE}> {",
"\t\tDEFAULT(\"00\", \"$5\"),",
"\t\t// TODO other types",
"\t\t;",
"",
"\t\tprivate final ${1|@NonNull ,@Nonnull |}String code;",
"\t\tprivate final ${1|@NonNull ,@Nonnull |}String defaultMessage;",
"",
"\t\tType(${1|@NonNull ,@Nonnull |}String code, ${1|@NonNull ,@Nonnull |}String defaultMessage) {",
"\t\t\tthis.code = code;",
"\t\t\tthis.defaultMessage = defaultMessage;",
"\t\t}",
"",
"\t\t@Override",
"\t\tpublic ${1|@NonNull ,@Nonnull |}String getCode() {",
"\t\t\treturn code;",
"\t\t}",
"",
"\t\t@Override",
"\t\tpublic ${1|@NonNull ,@Nonnull |}String getDefaultMessage() {",
"\t\t\treturn defaultMessage;",
"\t\t}",
"",
"\t\t@Override",
"\t\tpublic ${1|@NonNull ,@Nonnull |}${2:$TM_FILENAME_BASE} create() {",
"\t\t\treturn new ${2:$TM_FILENAME_BASE}(this);",
"\t\t}",
"\t",
"\t\t@Override",
"\t\tpublic ${1|@NonNull ,@Nonnull |}${2:$TM_FILENAME_BASE} create(@Nullable String message) {",
"\t\t\treturn new ${2:$TM_FILENAME_BASE}(this, message);",
"\t\t}",
"\t",
"\t\t@Override",
"\t\tpublic ${1|@NonNull ,@Nonnull |}${2:$TM_FILENAME_BASE} create(@Nullable Throwable cause) {",
"\t\t\treturn new ${2:$TM_FILENAME_BASE}(this, cause);",
"\t\t}",
"\t",
"\t\t@Override",
"\t\tpublic ${1|@NonNull ,@Nonnull |}${2:$TM_FILENAME_BASE} create(@Nullable String message, @Nullable Throwable cause) {",
"\t\t\treturn new ${2:$TM_FILENAME_BASE}(this, message, cause);",
"\t\t}",
"\t}",
"}",
"",
],
"description": "Exception with multiple types."
}
}