使用 Hono RPC 实现优雅的错误处理和端到端类型安全

使用 hono rpc 实现优雅的错误处理和端到端类型安全

JavaScript 的错误处理机制,虽然提供了 try-catch 块和异常抛出,但在实际应用中常常显得不够简洁直观。 本文介绍一种借鉴 Golang 错误处理方式,结合 Hono RPC 实现更优雅、类型安全的错误处理方法。

传统 JavaScript 错误处理模式冗长且缺乏错误类型信息:

async function fetchdata(url) {  try {    const response = await fetch(url);    if (!response.ok) {      throw new Error(`HTTP error! Status: ${response.status}`);    }    const data = await response.json();    console.log(data);  } catch (error) {    console.error("Error fetching data:", error.message);  }}

这种方式难以明确识别错误来源和类型。

Golang 式错误处理

Golang 的错误处理方式更直接,将错误作为返回值的一部分:

data, err := getdata()if err != nil {  // handle error}

这种方法允许立即处理错误,避免后续代码因错误而执行异常。 Supabase 的 supabase-js 库也采用了类似的模式。

Hono RPC 的优雅错误处理

Hono RPC 提供了一种类型安全且高效的错误处理机制:

const onsubmit = async (data: signupschema) => {  const res = await callrpc(api.auth.signup.$post({ json: data }));  if (res.error) {    toast.error(res.error);    return;  }  toast.success("Account created successfully");  router.navigate({ to: "/" });};

该函数通过 RPC 传递类型安全的 JSON 数据,并返回包含数据或错误的对象,其数据类型由 RPC 定义推断。

腾讯云AI代码助手 腾讯云AI代码助手

基于混元代码大模型的AI辅助编码工具

腾讯云AI代码助手 172 查看详情 腾讯云AI代码助手

配置优雅的错误处理

按照 Hono 官方文档,配置错误处理程序:

Hono 错误处理程序配置

后端应返回包含错误信息和状态码的文本响应:

export const errorhandler = (err: Error | HttpException, c: Context) => {  console.log("=== Caught error ===");  if (err instanceof HttpException) {    return c.text(err.message, err.status);  }  if (err instanceof z.ZodError) {    return c.text(err.errors.map((err) => err.message).join(",n"), 400);  }  console.error(err);  return c.text("Something went wrong", 500);};// Add as an error handler on the Hono instanceconst app = new Hono();app.onerror(errorhandler);

根据 Hono 文档,抛出 HttpException

import { HttpException } from "hono/http-exception";app.post("/", async (c, next) => {  if (somethingwentwrong) {    throw new HttpException(401, { message: "Custom error message" });  }  return c.json({ message: "Success" });});

前端错误处理程序配置

import { ClientResponse, hc } from "hono/client";import type { ApiRoutes } from "../../../backend/app";const client = hc("/");export const callrpc = async (  rpc: Promise): Promise => {  try {    const data = await rpc;    if (!data.ok) {      const res = await data.text();      return { data: null, error: res };    }    const res = await data.json();    return { data: res as T, error: null };  } catch (error) {    return { data: null, error: (error as Error).message };  }};export default client.api;

callrpc 函数根据 RPC 定义自动推断数据类型,返回包含数据或错误的对象。

使用方法

端到端类型安全:

const onsubmit = async (data: signupschema) => {  const res = await callrpc(api.auth.signup.$post({ json: data }));  if (res.error) {    toast.error(res.error);    return;  }  toast.success("Account created successfully");  router.navigate({ to: "/" });};

缺点

后端仅返回错误文本和成功响应 JSON。偏离了 JavaScript 的传统错误处理方式。需要立即处理错误,可能并非所有场景都适用。

以上就是使用 Hono RPC 实现优雅的错误处理和端到端类型安全的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/782717.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月26日 10:25:13
下一篇 2025年11月26日 10:25:35

相关推荐

  • 币圈空投在哪获取 怎样才能得到空投奖励

    本文将围绕“币圈空投在哪获取”和“怎样才能得到空投奖励”这两个问题进行讲解,帮助用户掌握有效参与空投的方式。 什么是币圈空投 空投是一种数字资产项目方在新币上线前后,用于吸引用户注意力的一种推广方式。通常用户只需完成一些简单任务,如关注社交平台、填写表单、加入社群等,即可获得一定数量的代币奖励。 获…

    好文分享 2025年12月8日
    000
  • 币圈空投在哪获取 怎么参加币圈空投

    本文将帮助用户理解空投的获取渠道以及具体参与步骤,并且结合实际操作流程,提供一套清晰的参考方式。 什么是币圈空投? 币圈空投是指项目方为了扩大影响力或奖励社区用户,将一定数量的数字资产免费发放给符合条件的用户。这种方式在区块链项目初期较为常见,尤其在推广新币时使用频繁。 获取空投的主要渠道 1、项目…

    2025年12月8日
    000
  • 币圈白嫖指南:空投奖励怎么领最划算

    “空投”指的是项目方向用户免费发放代币的一种推广手段。本文将详细介绍如何领取空投奖励。 什么是空投,为什么会有空投? 空投通常用于项目早期吸引关注度、鼓励用户参与社区建设或测试网络功能。通过空投,用户可以以低成本获取潜力代币,而项目方则能迅速扩大影响力。 领取空投的基本流程 1、创建账户:准备一个支…

    2025年12月8日
    000
  • 币圈空投是真的吗?币圈空投网址大全

    本文将简要介绍怎样判断空投真实性的方法,并推荐一些靠谱的空投平台和资源,帮助你安全参与和学习操作流程。 如何判断空投是否真实 以下步骤可以帮助辨别真假: 1、核实官方来源:查看项目官网、X/Twitter、Telegram或Discord官方发布渠道,绝不通过非官方链接参与。 2、不提供私钥或助记词…

    2025年12月8日
    000
  • 币圈免费空投怎么找 怎样才能领取到币圈空投

    本文将从信息获取、项目验证到实际操作流程寻找并成功领取币圈空投。通过这些步骤,可以更高效地参与空投活动 1、寻找空投信息的主要渠道 想要参与空投,第一步是获取可靠的信息来源。以下是常见的空投信息渠道: (1)空投聚合平台:如AirdropAlert、CoinMarketCap Airdrops等,这…

    2025年12月8日
    000
  • 如何下载和安装OKX官方APP?2025okx安卓最新版

    okx是一款知名的全球数字资产交易平台,提供广泛的加密货币交易、衍生品及其他web3服务。为了保障您的资产安全并享受全面的交易功能,推荐您通过官方渠道下载并安装okx官方app。本文将为您详细介绍如何获取并安装okx官方app,点击本文提供的下载链接即可开始下载过程。 获取官方APP下载链接 为了确…

    2025年12月8日
    000
  • USDT如何低成本出金,怎样减少汇率损失?

    常见的USDT出金方式 1、 通过加密货币交易所的p2p (peer-to-peer) 交易是用户将usdt兑换成法定货币的一种主流低成本方式。用户可以直接与有法币需求的买家进行交易。 2、 一些大型交易所或平台提供法币提现功能,允许用户将数字资产直接转换为法定货币并提现到绑定的银行账户。这种方式的…

    2025年12月8日
    000
  • OpenTable、POS 系统整合与顾客洞察:打造餐厅成功的秘诀

    tonic pos 与 opentable 宣布达成合作!这项全新集成将操作数据整合,助力餐厅打造个性化顾客体验,并提升整体运营效率。 设想一下:你常去的那家本地餐馆变得更加智能。这正是 Tonic POS 与 OpenTable 最新战略协作所带来的变革。此次合作借助技术手段,旨在优化用餐流程并强…

    2025年12月8日
    000
  • OpenSea的移动端转型:Rally收购与NFT交易的未来

    opensea 收购 rally,重塑移动端 nft 交易格局。本文将探讨这一举措对创作者、收藏者以及链上经济的影响,并分析当前不断变化的 nft 市场格局。 OpenSea 的移动战略:收购 Rally 与 NFT 交易的未来 NFT 领域近期因 OpenSea 的一项重要动作引发广泛关注:公司正…

    2025年12月8日
    000
  • 人形机器人、情感智能与人工智能:未来已来

    探索人形机器人、情感智能与人工智能技术交汇的无限可能,聚焦 realbotix 的最新突破及推动未来发展的关键趋势。 人形机器人、情感智能与人工智能:未来已来 人形机器人、情感智能与人工智能的结合早已跳脱科幻范畴。Realbotix 正在这一领域开疆拓土,推出具备情感识别、自然互动和多感官感知能力的…

    2025年12月8日
    000
  • 50卢比硬币与德里高等法院:暂无铸造计划,但可及性如何?

    印度最高法院回应了关于50卢比纸币缺乏触觉特征的质疑,同时政府也明确了其对于发行50卢比硬币的态度。 你是否曾思考过,为何从未见过可以发出清脆声响的50卢比硬币?近日,德里高等法院便审理了一起与此相关的案件——准确地说,是关于这种硬币“并不存在”的问题。让我们一同了解围绕50卢比硬币的争议、法院的介…

    2025年12月8日
    000
  • 欧易okex安卓正版2025 最新官方版本 v6.128.0

    欧易okex是一款专业的数字资产交易与管理工具,为广大用户提供安全、稳定、可靠的交易服务。它支持多种主流数字资产的交易,并提供丰富的金融工具和产品,帮助用户轻松管理和配置自己的数字资产。本文将为您提供欧易okex安卓正版2025最新官方版本v6.128.0的下载与安装教程,点击本文中提供的官方下载链…

    2025年12月8日
    000
  • 加密货币官网入口 加密货币网站网页版入口

    对于希望探索数字资产领域的用户来说,找到一个安全、可靠的官方网站入口至关重要。本文将为您梳理并介绍当前市场上几个主流的加密货币信息与交易平台,详细解析它们的特点和适用人群,帮助您更清晰地选择适合自己的起点。 主流加密货币平台入口介绍 以下平台在全球范围内拥有广泛的用户基础和良好的声誉,各自具备不同的…

    2025年12月8日 好文分享
    000
  • OKX官方正版入口 欧易安卓最新版本2025 v6.129.0

    欧易okx是一款全球领先的数字资产服务平台,致力于为用户提供安全、稳定、可靠的数字资产交易及管理服务。它支持多种主流数字资产的交易,并提供丰富的金融工具和产品,凭借其强大的技术实力和完善的安全风控体系,成为了众多用户的首选平台。本文为您提供了okx官方正版入口,您可以通过点击本文中提供的下载链接,来…

    2025年12月8日
    000
  • 币圈热门币种有哪些?2025年-2030年热门币种价格预测

    在瞬息万变的数字资产市场中,识别具有长期潜力的项目是参与者关注的焦点。本文将深入探讨当前市场上的几个主流热门币种,并基于其技术基础、生态系统发展和市场趋势,展望它们在2025年至2030年期间的潜在价值走向。 热门%ignore_a_1%官方地址汇总 币安Binance:  ()欧易OKX:  ()…

    2025年12月8日
    000
  • 为啥所有智能合约都离不开以太坊EVM 揭秘EVM背后的逻辑

    以太坊EVM(Ethereum Virtual Machine)是整个以太坊智能合约生态的基础。在这篇文章中,我们将通过通俗语言解释什么是EVM、它如何运行、为何智能合约几乎都离不开它,以及它如何成为Web3的重要基石。本文将通过逐步解析的方式,帮助你理解EVM的逻辑结构及其在%ignore_a_2…

    2025年12月8日
    000
  • 跨链和兼容性的关键:以太坊EVM的生态优势

    跨链和兼容性是当前区块链技术发展的关键点之一,而以太坊EVM(Ethereum Virtual Machine)在这方面扮演着极为重要的角色。本文将围绕以太坊EVM的生态优势展开说明,介绍其在支持跨链互通和协议兼容方面的机制与优势,并简要梳理其如何成为多个链上项目首选的技术基础。 2025主流加密货…

    2025年12月8日
    000
  • 币圈项目空投怎么查?如何避免假空投骗局?

    查找加密货币项目的空投机会,是许多参与者希望获取早期项目代币的方式。这些空投通常是项目方推广品牌、社区建设或者激励早期用户的一种手段。要有效地找到这些信息,需要依赖多个可靠的渠道和方法。 查询空投信息需要保持警惕,因为互联网上充斥着各种真假难辨的信息。识别可靠的信息源是第一步。许多项目会在其官方网站…

    2025年12月8日
    000
  • 多链共识的技术基础 EVM兼容正在改变DeFi和dApp的发展路线

    本文围绕“多链共识的技术基础”以及“EVM兼容正在改变DeFi和dApp的发展路线”两大主题进行解析,主要介绍多链共识的关键技术原理,并进一步说明EVM兼容如何助推跨链生态发展。在多链布局成为趋势的背景下,这些技术的融合正在对去中心化金融和应用产生重要影响。 2025主流加密货币交易所官网注册地址推…

    2025年12月8日
    000
  • 稳定币如何钱生钱,借贷协议是否稳赚?

    稳定币是加密资产世界中的一种特殊类别,它们的设计目标是将价值与某种外部参考资产挂钩,例如法定货币,其中美元是最常见的锚定对象。这种设计使得稳定币的价格波动远小于比特币或以太坊等波动性较高的加密货币。这种相对的价值稳定性让稳定币在数字资产交易、价值储存以及构建各类去中心化金融(defi)应用中扮演着重…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信