news 2026/4/17 23:35:11

[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/4/17 18:46:10

把所有业务都转成 MCP,太傻了!AI Skill 才是正道

MCP&#xff08;Model Context Protocol&#xff09;可能火得有些过头了。自从 Anthropic 把这套协议抛出来&#xff0c;不少同行就开始坐不住&#xff0c;仿佛一夜之间&#xff0c;不把自家的业务接口重写成 MCP Server&#xff0c;就拿不到 AI 时代的入场券了。 每隔几年&am…

作者头像 李华
网站建设 2026/4/18 9:20:40

<span class=“js_title_inner“>Python:元类机制</span>

在 Python 的对象模型中&#xff0c;元类机制&#xff08;metaclass mechanism&#xff09;并非独立于对象系统的“高级技巧”&#xff0c;而是类对象创建过程的语言级扩展点。它关注的不是“如何使用类”&#xff0c;而是“类本身如何被创建、初始化与组织”。一、什么是元类机…

作者头像 李华
网站建设 2026/4/17 14:15:12

基于时空风险场的道路自动驾驶车辆预测轨迹规划

基于时空风险场的道路自动驾驶车辆预测轨迹规划 下面复现这篇关于自动驾驶轨迹规划的论文《基于时空风险场的道路自动驾驶车辆预测轨迹规划》,实现核心算法。 1. 算法概述 该论文提出了一种基于时空风险势场的预测轨迹规划方法,主要特点是将轨迹生成和风险评估解耦为两个并…

作者头像 李华
网站建设 2026/4/18 7:12:57

PostgreSQL 核心原理:读不阻塞写,写不阻塞读的秘密

文章目录 一、传统锁模型 vs MVCC&#xff1a;为什么需要多版本&#xff1f;1.1 传统锁模型的局限1.2 MVCC 的核心思想1.3 PostgreSQL 中 MVCC 的实现基础&#xff1a;元组头&#xff08;HeapTupleHeader&#xff09;1.4 事务快照&#xff08;Snapshot&#xff09;&#xff1a;…

作者头像 李华
网站建设 2026/4/18 9:49:36

基于SpringBoot+Vue的健康管理系统

&#x1f345; 作者主页&#xff1a;Selina .a &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。 主要内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据…

作者头像 李华