news 2026/9/23 18:35:48

[todo]try catch no | result yes

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[todo]try catch no | result yes

try/catch的异常抛出是隐式失控的错误流,把错误处理和正常逻辑强行割裂,还容易漏处理

Rust/Haskell的类型化错误封装(Result/Maybe)是显式把错误纳入类型系统,让错误处理成为编译期强制的逻辑分支,从根源避免漏处理且代码流更清晰

C++(try/catch 写法)

#include <iostream>

#include <stdexcept>

// 除法函数,错误时抛异常

int div(int a, int b) {

if (b == 0) throw std::runtime_error("除零错误");

return a / b;

}

int main() {

int a = 10, b = 0;

// 显式包裹才会捕获,漏写try/catch直接崩溃

try {

int res = div(a, b);

std::cout << res << std::endl;

} catch (const std::runtime_error& e) { // 需匹配异常类型,漏匹配仍崩溃

std::cerr << "错误:" << e.what() << std::endl;

}

return 0;

}

核心问题:错误是「运行时抛射」,编译期无提示,漏捕获/类型匹配错直接程序崩溃,错误处理与正常逻辑割裂。

Rust(Result 类型封装)

// 除法函数,返回Result类型:Ok(结果) / Err(错误信息)

fn div(a: i32, b: i32) -> Result<i32, &'static str> {

if b == 0 {

Err("除零错误") // 错误作为返回值,而非抛射

} else {

Ok(a / b)

}

}

fn main() {

let a = 10;

let b = 0;

// 编译期强制处理错误:不处理Result,编译器直接报错

match div(a, b) {

Ok(res) => println!("{}", res),

Err(e) => eprintln!("错误:{}", e),

}

// 也可使用?/unwrap等语法,仍需显式处理,无隐式失控

// let res = div(a, b).unwrap(); // 主动unwrap,错误时panic(显式而非隐式)

}

优势:错误是「类型化返回值」,编译期强制处理,不写错误分支代码无法编译,错误流与正常逻辑统一在类型系统中。

对比

- try/catch:错误藏在背后突然跳出来,你得主动“守着”(写try)才接得住,没守到就直接翻车;

- Result类型:错误明着递到你手上,编译器逼着你“接过来处理”,不接连门都不让出(编译不通过

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 20:20:33

阿里云携手模思智能构建一站式多模态数据处理平台

模思智能简介 上海模思智能科技有限公司&#xff08;MOSI Intelligence&#xff09;成立于2024年11月&#xff0c;是国内深度情境智能领航者&#xff0c;依托深厚的学术积淀与卓越的工程落地能力&#xff0c;致力于构建下一代全感官人机交互体系。公司由复旦大学知名教授邱锡鹏…

作者头像 李华
网站建设 2026/9/23 4:02:38

从单点工具到智能流水线:企业级多智能体AI开发工作流架构实战

最近研学过程中发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的…

作者头像 李华
网站建设 2026/9/23 4:01:22

springboot停车场管理系统-开题报告

目录开题报告背景系统目标技术选型功能模块设计创新点预期成果进度计划项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作开题报告背景 随着城市化进程加快&#xff0c;车辆数量激增&#xff0c;传统停车场管…

作者头像 李华
网站建设 2026/9/23 4:01:11

DeepSeek解读用TypeScript的类型求解数独的代码

在网上看到一个用TypeScript的类型求解数独的代码。 但是我按照TypeScript的编译执行过程&#xff0c;没有任何输出。而执行app.ts编译后的js文件是有输出的。 export PATH$PATH:/mnt/c/d/node-v24.4.1-linux-x64/binnpm config set registry https://registry.npmmirror.com …

作者头像 李华
网站建设 2026/9/23 4:01:23

生态林业旅游体验与森林保护攻略

生态林业旅游不是简单的进山看树&#xff0c;它是以森林生态系统为依托&#xff0c;在严格保护的前提下&#xff0c;通过科学规划和合理利用&#xff0c;让游客体验自然之美、感知生态价值&#xff0c;并促进区域可持续发展的一种旅游形式。它核心在于平衡“生态保护”、“旅游…

作者头像 李华