面试题答案
一键面试- 定义错误类型:
可以通过定义一个枚举类型来表示不同的错误情况。
// 定义文件读取错误类型 #[derive(Debug)] enum FileReadError { FileNotFound, PermissionDenied, // 可以添加更多错误情况 }
- 在读取文件函数中返回相应的错误:
函数使用
Result
类型来返回读取的内容或者错误。use std::fs::File; use std::io::{self, Read}; fn read_file(file_path: &str) -> Result<String, FileReadError> { let mut file = match File::open(file_path) { Ok(file) => file, Err(error) => { if error.kind() == io::ErrorKind::NotFound { return Err(FileReadError::FileNotFound); } else if error.kind() == io::ErrorKind::PermissionDenied { return Err(FileReadError::PermissionDenied); } // 这里可以添加处理其他错误类型的逻辑 panic!("Unexpected error: {:?}", error); } }; let mut contents = String::new(); match file.read_to_string(&mut contents) { Ok(_) => Ok(contents), Err(error) => { // 这里也可以根据具体错误情况返回更合适的错误类型 panic!("Unexpected read error: {:?}", error); } } }
在上述代码中:
- 首先定义了
FileReadError
枚举来表示文件读取过程中可能出现的错误类型。 read_file
函数接收一个文件路径,尝试打开文件并读取其内容。如果文件不存在,返回FileReadError::FileNotFound
;如果权限不足,返回FileReadError::PermissionDenied
。读取文件内容成功则返回包含文件内容的Ok
结果。如果出现其他未处理的错误,这里简单地使用panic!
,实际应用中可以根据需要更合理地处理。