ErisPulse 1.1.14.dev1__py3-none-any.whl → 1.1.15__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ErisPulse/__main__.py +73 -1
- ErisPulse/adapter.py +335 -31
- ErisPulse/db.py +436 -36
- ErisPulse/logger.py +303 -25
- ErisPulse/mods.py +312 -19
- ErisPulse/raiserr.py +141 -18
- {erispulse-1.1.14.dev1.dist-info → erispulse-1.1.15.dist-info}/METADATA +1 -1
- erispulse-1.1.15.dist-info/RECORD +13 -0
- {erispulse-1.1.14.dev1.dist-info → erispulse-1.1.15.dist-info}/entry_points.txt +2 -2
- erispulse-1.1.14.dev1.dist-info/RECORD +0 -13
- {erispulse-1.1.14.dev1.dist-info → erispulse-1.1.15.dist-info}/WHEEL +0 -0
- {erispulse-1.1.14.dev1.dist-info → erispulse-1.1.15.dist-info}/licenses/LICENSE +0 -0
ErisPulse/raiserr.py
CHANGED
|
@@ -1,36 +1,159 @@
|
|
|
1
1
|
"""
|
|
2
2
|
# 错误管理系统
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
提供错误类型注册、抛出和管理功能,集成全局异常处理。支持自定义错误类型、错误链追踪和全局异常捕获。
|
|
5
|
+
|
|
6
|
+
## 核心功能
|
|
7
|
+
1. 错误类型注册和管理
|
|
8
|
+
2. 动态错误抛出
|
|
9
|
+
3. 全局异常处理
|
|
10
|
+
4. 错误信息追踪
|
|
11
|
+
5. 异步错误处理
|
|
5
12
|
|
|
6
13
|
## API 文档
|
|
7
|
-
### 错误注册:
|
|
8
|
-
- register(name, doc="", base=Exception): 注册新的错误类型
|
|
9
|
-
- info(name: str = None): 获取错误类型信息
|
|
10
14
|
|
|
11
|
-
###
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
### 错误注册
|
|
16
|
+
#### register(name: str, doc: str = "", base: type = Exception) -> type
|
|
17
|
+
注册新的错误类型。
|
|
18
|
+
- 参数:
|
|
19
|
+
- name: 错误类型名称
|
|
20
|
+
- doc: 错误描述文档
|
|
21
|
+
- base: 基础异常类,默认为Exception
|
|
22
|
+
- 返回:
|
|
23
|
+
- type: 注册的错误类型类
|
|
24
|
+
- 示例:
|
|
25
|
+
```python
|
|
26
|
+
# 注册一个简单错误
|
|
27
|
+
sdk.raiserr.register("SimpleError", "简单的错误类型")
|
|
28
|
+
|
|
29
|
+
# 注册带有自定义基类的错误
|
|
30
|
+
class CustomBase(Exception):
|
|
31
|
+
pass
|
|
32
|
+
sdk.raiserr.register("AdvancedError", "高级错误", CustomBase)
|
|
33
|
+
```
|
|
14
34
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
35
|
+
#### info(name: str = None) -> dict | None
|
|
36
|
+
获取错误类型信息。
|
|
37
|
+
- 参数:
|
|
38
|
+
- name: 错误类型名称,如果为None则返回所有错误类型信息
|
|
39
|
+
- 返回:
|
|
40
|
+
- dict: 包含错误类型信息的字典,包括类型名、文档和类引用
|
|
41
|
+
- None: 如果指定的错误类型不存在
|
|
42
|
+
- 示例:
|
|
43
|
+
```python
|
|
44
|
+
# 获取特定错误信息
|
|
45
|
+
error_info = sdk.raiserr.info("SimpleError")
|
|
46
|
+
print(f"错误类型: {error_info['type']}")
|
|
47
|
+
print(f"错误描述: {error_info['doc']}")
|
|
48
|
+
|
|
49
|
+
# 获取所有注册的错误信息
|
|
50
|
+
all_errors = sdk.raiserr.info()
|
|
51
|
+
for name, info in all_errors.items():
|
|
52
|
+
print(f"{name}: {info['doc']}")
|
|
53
|
+
```
|
|
18
54
|
|
|
19
|
-
###
|
|
55
|
+
### 错误抛出
|
|
56
|
+
#### ErrorType(msg: str, exit: bool = False)
|
|
57
|
+
动态生成的错误抛出函数。
|
|
58
|
+
- 参数:
|
|
59
|
+
- msg: 错误消息
|
|
60
|
+
- exit: 是否在抛出错误后退出程序
|
|
61
|
+
- 示例:
|
|
62
|
+
```python
|
|
63
|
+
# 抛出不退出的错误
|
|
64
|
+
sdk.raiserr.SimpleError("操作失败")
|
|
65
|
+
|
|
66
|
+
# 抛出导致程序退出的错误
|
|
67
|
+
sdk.raiserr.CriticalError("致命错误", exit=True)
|
|
68
|
+
|
|
69
|
+
# 带有异常捕获的使用方式
|
|
70
|
+
try:
|
|
71
|
+
sdk.raiserr.ValidationError("数据验证失败")
|
|
72
|
+
except Exception as e:
|
|
73
|
+
print(f"捕获到错误: {e}")
|
|
74
|
+
```
|
|
20
75
|
|
|
76
|
+
### 全局异常处理
|
|
77
|
+
#### global_exception_handler(exc_type: type, exc_value: Exception, exc_traceback: traceback)
|
|
78
|
+
全局同步异常处理器。
|
|
79
|
+
- 参数:
|
|
80
|
+
- exc_type: 异常类型
|
|
81
|
+
- exc_value: 异常值
|
|
82
|
+
- exc_traceback: 异常追踪信息
|
|
83
|
+
- 示例:
|
|
84
|
+
```python
|
|
85
|
+
# 系统会自动捕获未处理的异常
|
|
86
|
+
def risky_operation():
|
|
87
|
+
raise Exception("未处理的异常")
|
|
88
|
+
|
|
89
|
+
# 异常会被global_exception_handler捕获并处理
|
|
90
|
+
risky_operation()
|
|
21
91
|
```
|
|
22
|
-
from ErisPulse import sdk
|
|
23
92
|
|
|
24
|
-
|
|
25
|
-
|
|
93
|
+
#### async_exception_handler(loop: asyncio.AbstractEventLoop, context: dict)
|
|
94
|
+
全局异步异常处理器。
|
|
95
|
+
- 参数:
|
|
96
|
+
- loop: 事件循环实例
|
|
97
|
+
- context: 异常上下文信息
|
|
98
|
+
- 示例:
|
|
99
|
+
```python
|
|
100
|
+
async def async_operation():
|
|
101
|
+
raise Exception("异步操作错误")
|
|
102
|
+
|
|
103
|
+
# 异常会被async_exception_handler捕获并处理
|
|
104
|
+
asyncio.create_task(async_operation())
|
|
105
|
+
```
|
|
26
106
|
|
|
27
|
-
|
|
28
|
-
|
|
107
|
+
## 最佳实践
|
|
108
|
+
1. 错误类型注册
|
|
109
|
+
```python
|
|
110
|
+
# 为特定功能模块注册错误类型
|
|
111
|
+
sdk.raiserr.register("DatabaseError", "数据库操作错误")
|
|
112
|
+
sdk.raiserr.register("NetworkError", "网络连接错误")
|
|
113
|
+
sdk.raiserr.register("ValidationError", "数据验证错误")
|
|
114
|
+
|
|
115
|
+
# 使用继承关系组织错误类型
|
|
116
|
+
class ModuleError(Exception):
|
|
117
|
+
pass
|
|
118
|
+
sdk.raiserr.register("ConfigError", "配置错误", ModuleError)
|
|
119
|
+
sdk.raiserr.register("PluginError", "插件错误", ModuleError)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
2. 错误处理流程
|
|
123
|
+
```python
|
|
124
|
+
def process_data(data):
|
|
125
|
+
try:
|
|
126
|
+
if not data:
|
|
127
|
+
sdk.raiserr.ValidationError("数据不能为空")
|
|
128
|
+
if not isinstance(data, dict):
|
|
129
|
+
sdk.raiserr.ValidationError("数据必须是字典类型")
|
|
130
|
+
|
|
131
|
+
# 处理数据...
|
|
132
|
+
|
|
133
|
+
except Exception as e:
|
|
134
|
+
# 错误会被自动记录并处理
|
|
135
|
+
sdk.raiserr.ProcessingError(f"数据处理失败: {str(e)}")
|
|
136
|
+
```
|
|
29
137
|
|
|
30
|
-
|
|
31
|
-
|
|
138
|
+
3. 异步环境使用
|
|
139
|
+
```python
|
|
140
|
+
async def async_task():
|
|
141
|
+
try:
|
|
142
|
+
result = await some_async_operation()
|
|
143
|
+
if not result.success:
|
|
144
|
+
sdk.raiserr.AsyncOperationError("异步操作失败")
|
|
145
|
+
except Exception as e:
|
|
146
|
+
# 异步错误会被async_exception_handler捕获
|
|
147
|
+
raise
|
|
32
148
|
```
|
|
33
149
|
|
|
150
|
+
## 注意事项
|
|
151
|
+
1. 错误类型命名应具有描述性,便于理解错误来源
|
|
152
|
+
2. 错误消息应包含足够的上下文信息,便于调试
|
|
153
|
+
3. 适当使用exit参数,只在致命错误时设置为True
|
|
154
|
+
4. 避免在全局异常处理器中执行耗时操作
|
|
155
|
+
5. 确保异步代码中的错误能够被正确捕获和处理
|
|
156
|
+
|
|
34
157
|
"""
|
|
35
158
|
|
|
36
159
|
import sys
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
ErisPulse/__init__.py,sha256=k-X8WV9sIrYeYDNb8qZyBZ8s8yNL2bKWhZdkPbzRWII,8936
|
|
2
|
+
ErisPulse/__main__.py,sha256=KHBHedKC2bYWeqOi2rENgv_l5Pz-d2y7Bf4ST3R0TY4,52862
|
|
3
|
+
ErisPulse/adapter.py,sha256=3DayPbvWit2D8DTLIvhbP3862arv2UZuAkFnE9QWGro,17479
|
|
4
|
+
ErisPulse/db.py,sha256=a_5uTQk8w2TDp6J6AIQ4rF8Z2IvswuSg8q-Tx0SHfGA,24900
|
|
5
|
+
ErisPulse/logger.py,sha256=np6H4-x3xNpmoOGou5znsfv-iVlX56cVrsX8446cY-M,14764
|
|
6
|
+
ErisPulse/mods.py,sha256=oDVgEh56IUTLZDIxxWTQe5QvQSyWVAb8vhgd1fzFlYo,12253
|
|
7
|
+
ErisPulse/raiserr.py,sha256=Un8VGcVYDOSi7ptRVmyBzUTW7mQzDatqIza6919dQ1w,7034
|
|
8
|
+
ErisPulse/util.py,sha256=tmmZA4Ef5ElB01KZg2fTZLrkZOJbORjnkAd8sXj7xqw,4335
|
|
9
|
+
erispulse-1.1.15.dist-info/METADATA,sha256=4gCjt0C4F_qGRW3rKd0Rn9n2Tr9liDB0eCslFwex7zY,5877
|
|
10
|
+
erispulse-1.1.15.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
11
|
+
erispulse-1.1.15.dist-info/entry_points.txt,sha256=y8ppdsQhk-azC7_ikQgRr4rITSZ4VC4crVKtzHh4TBY,146
|
|
12
|
+
erispulse-1.1.15.dist-info/licenses/LICENSE,sha256=plj4EYVfKAzc0ZWoC5T2vsQ86u0yLpu17NdAPeIcgVo,1066
|
|
13
|
+
erispulse-1.1.15.dist-info/RECORD,,
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
ErisPulse/__init__.py,sha256=k-X8WV9sIrYeYDNb8qZyBZ8s8yNL2bKWhZdkPbzRWII,8936
|
|
2
|
-
ErisPulse/__main__.py,sha256=aZK7FdvFTgsKgHPYpaeKpA_l2JFhEy9TNy3vndkONFk,50001
|
|
3
|
-
ErisPulse/adapter.py,sha256=g5npw-RAmGKXY3gTO8oNA63DRJ3Z9xVrl9BWuus-EQs,9837
|
|
4
|
-
ErisPulse/db.py,sha256=rXxpTug5NMZQTJ_07lJTe-PWdoePNPAkYoQDfazFapY,14411
|
|
5
|
-
ErisPulse/logger.py,sha256=832gGOiRUfXhYjz9JZ3DfVzB6ttqIimyLU0xk5k7lZ0,7319
|
|
6
|
-
ErisPulse/mods.py,sha256=lBCWM0VfsCJehnMgpswKYuHitg30JERg0H4WN6kqgbA,4509
|
|
7
|
-
ErisPulse/raiserr.py,sha256=2dJA3g6aje4yxhr1JPeZsrxudblKAOq6T_LMHeRjQ24,3438
|
|
8
|
-
ErisPulse/util.py,sha256=tmmZA4Ef5ElB01KZg2fTZLrkZOJbORjnkAd8sXj7xqw,4335
|
|
9
|
-
erispulse-1.1.14.dev1.dist-info/METADATA,sha256=I03H-qlpVtNAxuX_H60HgnTaMqLrKGpPfe5zIq9EhfE,5882
|
|
10
|
-
erispulse-1.1.14.dev1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
11
|
-
erispulse-1.1.14.dev1.dist-info/entry_points.txt,sha256=AjKvOdYR7QGXVpEJhjUYUwV2JluE4lm9vNbknC3hjOM,155
|
|
12
|
-
erispulse-1.1.14.dev1.dist-info/licenses/LICENSE,sha256=plj4EYVfKAzc0ZWoC5T2vsQ86u0yLpu17NdAPeIcgVo,1066
|
|
13
|
-
erispulse-1.1.14.dev1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|