1mod case;
2mod context;
3mod domain;
4mod error;
5mod reason;
6mod universal;
7use std::fmt::Display;
8
9pub use context::ContextAdd;
10pub use context::{ContextRecord, OperationContext, WithContext};
11pub use domain::DomainReason;
12pub use error::{convert_error, StructError, StructErrorTrait};
13pub use reason::ErrorCode;
14pub use universal::{
15 ConfErrReason, UvsBizFrom, UvsConfFrom, UvsDataFrom, UvsExternalFrom, UvsLogicFrom, UvsNetFrom,
16 UvsNotFoundFrom, UvsPermissionFrom, UvsReason, UvsResFrom, UvsSysFrom, UvsTimeoutFrom,
17 UvsValidationFrom,
18};
19
20pub enum ErrStrategy {
21 Retry,
23 Ignore,
25 Throw,
27}
28
29pub fn print_error<R: DomainReason + ErrorCode + Display>(err: &StructError<R>) {
30 println!("[错误代码 {}] \n{err}", err.reason().error_code());
31 for ctx in err.context() {
32 println!("上下文: {ctx}", ctx = ctx.context());
33 }
34 println!("{}", "-".repeat(50));
35}