Skip to main content

error_handling/
error_handling.rs

1use bark_rs::{BarkError, BarkMessage, SyncBarkClient};
2
3fn main() {
4    println!("🚨 演示错误处理");
5
6    // 创建没有默认设备密钥的客户端
7    let client = SyncBarkClient::new("https://api.day.app");
8
9    // 尝试发送没有设备密钥的消息
10    let message_without_key = BarkMessage::builder()
11        .title("错误演示")
12        .body("这个消息没有设备密钥")
13        .build();
14
15    match client.send(&message_without_key) {
16        Ok(_) => println!("❌ 意外成功"),
17        Err(BarkError::MissingDeviceKey) => {
18            println!("✅ 正确捕获到缺少设备密钥错误");
19        }
20        Err(e) => println!("❓ 其他错误: {}", e),
21    }
22
23    // 演示正确的错误处理模式
24    let result = client
25        .message()
26        .device_key("QJ48vPutCAsPW2B6pE2A3a")
27        .title("正确的消息")
28        .body("这个消息有设备密钥")
29        .send();
30
31    match result {
32        Ok(response) => {
33            println!(
34                "✅ 消息发送成功: code={}, message={}",
35                response.code, response.message
36            );
37        }
38        Err(BarkError::RequestError(e)) => {
39            println!("❌ 网络请求错误: {}", e);
40        }
41        Err(BarkError::MissingDeviceKey) => {
42            println!("❌ 缺少设备密钥");
43        }
44        Err(BarkError::SerializationError(e)) => {
45            println!("❌ 序列化错误: {}", e);
46        }
47        Err(BarkError::InvalidUrl) => {
48            println!("❌ 无效URL");
49        }
50    }
51
52    println!("🎉 错误处理演示完成!");
53}