REFACTOR: Completely refactored and fixed the error handling
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start([Function Called]) --> CheckErr{Did an error occur?}
|
||||
|
||||
%% Error path
|
||||
CheckErr -->|Yes| PushBit["Bitwise OR error code into err<br/>err |= ERROR_BIT"]
|
||||
PushBit --> CheckOrigin{Is origin == NULL?}
|
||||
CheckOrigin -->|Yes| SetOrigin["Record location in origin<br/>origin = __func__ / __FILE__"]
|
||||
CheckOrigin -->|No| KeepOrigin[Preserve original root cause]
|
||||
|
||||
SetOrigin --> ReturnStruct
|
||||
KeepOrigin --> ReturnStruct
|
||||
|
||||
%% Success / Normal path
|
||||
CheckErr -->|No| ComputeValue["Write computation result<br/>value = result"]
|
||||
ComputeValue --> ReturnStruct
|
||||
|
||||
ReturnStruct(["Return / Pass Out _err_t"]) --> Caller{Caller Inspection}
|
||||
|
||||
Caller -->|Check errors| InspectBits[Inspect bit flags in err]
|
||||
Caller -->|Read payload| ReadValue[Access value data]
|
||||
Caller -->|Debug / Log| PrintOrigin[Print root cause origin]
|
||||
```
|
||||
Reference in New Issue
Block a user