访问Redis时出现无声错误
我是个生锈的新手。我正在使用板条箱访问Redis时出现无声错误,redis,rust,Redis,Rust,我是个生锈的新手。我正在使用板条箱redis=“0.3.1”,但程序只是简单地退出,不会引起恐慌。我所做的唯一不同的事情是数据库不同 extern crate redis; use redis::*; use std::string::String; use std::collections::HashSet; fn main() { read_meta_keys_redis("myset".to_string()); } fn read_meta_keys_redis(key:
redis=“0.3.1”
,但程序只是简单地退出,不会引起恐慌。我所做的唯一不同的事情是数据库不同
extern crate redis;
use redis::*;
use std::string::String;
use std::collections::HashSet;
fn main() {
read_meta_keys_redis("myset".to_string());
}
fn read_meta_keys_redis(key: String) -> redis::RedisResult<()> {
println!("22{}", key);
let client = try!(redis::Client::open("redis://127.0.0.1:6379/2"));
let con = try!(client.get_connection());
let mems: HashSet<i32> = try!(con.smembers(key));
for x in mems.iter() {
println!("op-->{}", x);
}
Ok(())
}
extern板条箱redis;
使用redis::*;
使用std::string::string;
使用std::collections::HashSet;
fn main(){
读取meta键redis(“myset.to_string());
}
fn read\u meta\u keys\u redis(key:String)->redis::RedisResult{
println!(“22{}”,键);
让client=try!(redis::client::open(“redis://127.0.0.1:6379/2"));
让con=try!(client.get_connection());
让mems:HashSet=try!(con.smembers(key));
用于mems中的x。iter(){
println!(“op-->{}”,x);
}
好(())
}
简短回答
已引发错误,但您将忽略它
长安瑟
非致命错误通常通过返回结果来传播,因此调用方可以处理错误。panic主要用于不可恢复的错误,并将中止当前线程。在这种情况下,redis库使用RedisResult
类型,它是Result
的别名
如果要处理错误,应该通过匹配结果类型来处理。尝试将主要功能更改为以下内容:
fn main() {
if let Err(e) = read_meta_keys_redis("myset".to_string()) {
println!("{}", e.description());
}
}
另请参见:您是否检查了由read\u meta\u keys\u redis
返回的RedisResult
的值?这是交叉发布到的。我假设rust会像java一样出现异常跟踪。显然我错了。谢谢。我能把错误找回来。但最初的目标仍未实现。我得到了一个错误无效的数据库号码我的本地redis客户端说127.0.0.1:6379[2]>smembers myset 1)“你好”2)“你好吗”127.0.0.1:6379[2]>也许你可以就此提出一个新问题。我不熟悉redis;)我来自Java背景,所以假设异常会在执行跟踪中冒泡。感谢您纠正meNo问题;)。。。如果你对答案满意,你可以把它标记为答案,这样人们就可以知道问题已经解决了。