Skip to content

Commit 409c420

Browse files
Merge pull request #6170 from halibobo1205/feat/add_tron_error
feat(exception): add TronError for system.exit optimization
2 parents 1f0aa38 + 0642903 commit 409c420

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package org.tron.core.exception;
2+
3+
import lombok.Getter;
4+
5+
/**
6+
* If a {@link TronError} is thrown, the service will trigger {@link System#exit(int)} by
7+
* {@link Thread#setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler)}.
8+
* NOTE: Do not attempt to catch {@link TronError}.
9+
*/
10+
@Getter
11+
public class TronError extends Error {
12+
13+
private final ErrCode errCode;
14+
15+
public TronError(String message, ErrCode exitCode) {
16+
super(message);
17+
this.errCode = exitCode;
18+
}
19+
20+
public TronError(String message, Throwable cause, ErrCode exitCode) {
21+
super(message, cause);
22+
this.errCode = exitCode;
23+
}
24+
25+
public TronError(Throwable cause, ErrCode exitCode) {
26+
super(cause);
27+
this.errCode = exitCode;
28+
}
29+
30+
@Getter
31+
public enum ErrCode {
32+
WITNESS_KEYSTORE_LOAD(-1),
33+
CHECKPOINT_VERSION(-1),
34+
LEVELDB_INIT(1),
35+
ROCKSDB_INIT(1),
36+
DB_FLUSH(1),
37+
REWARD_VI_CALCULATOR(1),
38+
KHAOS_DB_INIT(1),
39+
GENESIS_BLOCK_INIT(1),
40+
EVENT_SUBSCRIBE_ERROR(1),
41+
AUTO_STOP_PARAMS(1),
42+
API_SERVER_INIT(1),
43+
SOLID_NODE_INIT(0);
44+
45+
private final int code;
46+
47+
ErrCode(int code) {
48+
this.code = code;
49+
}
50+
51+
@Override
52+
public String toString() {
53+
return name() + "(" + code + ")";
54+
}
55+
}
56+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.tron.core.exception;
2+
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
6+
public class TronErrorTest {
7+
8+
@Test
9+
public void testTronError() {
10+
TronError tronError = new TronError("message", TronError.ErrCode.WITNESS_KEYSTORE_LOAD);
11+
Assert.assertEquals(tronError.getErrCode(), TronError.ErrCode.WITNESS_KEYSTORE_LOAD);
12+
Assert.assertEquals(tronError.getErrCode().toString(), "WITNESS_KEYSTORE_LOAD(-1)");
13+
Assert.assertEquals(tronError.getErrCode().getCode(), -1);
14+
tronError = new TronError("message", new Throwable(), TronError.ErrCode.API_SERVER_INIT);
15+
Assert.assertEquals(tronError.getErrCode(), TronError.ErrCode.API_SERVER_INIT);
16+
tronError = new TronError(new Throwable(), TronError.ErrCode.LEVELDB_INIT);
17+
Assert.assertEquals(tronError.getErrCode(), TronError.ErrCode.LEVELDB_INIT);
18+
}
19+
}

0 commit comments

Comments
 (0)