You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ExpressJS服务端错误抛出与TypeScript客户端错误处理的规范方式咨询

ExpressJS服务端错误抛出与TypeScript客户端错误处理的规范方式咨询

我正在用 React + TypeScript 开发客户端,ExpressJS + TypeScript 开发服务端来构建一个应用。我希望确保在服务端正确抛出错误,同时在客户端能够妥善处理这些错误。

服务端精简路由方法(创建MediaSet,类似“文件夹”)

const createMediaSet = async (req: Request, res: Response) => {
  const values = req.body;

  const name: string = values.name + '_'; // '_'仅用于强制触发错误
  const parentId: string | null = values.parent_id;

  try {
    if (!FileFolderNameRegex.test(name)) {
      throw new Error(`Mediaset name '${name}' is invalid!`);
    }

    const results = await createMediaSetRecord(name, parentId);
    const media_set_id = results.rows[0].media_set_id;
    res.status(StatusCode.SuccessCreated).json({media_set_id: media_set_id});
  } catch (error) {
    console.error(error);
    res.status(StatusCode.ErrorBadRequest).send({ status: false, message: String(error) });
  }
};

客户端处理异步请求的精简代码

React.useEffect(() => {
  if (!isProcessing) {
    if (data) {
      switch (mode) {
       // ... 此处省略大量处理逻辑 ...
      }
    }

    if (error) {
      console.error(error.message);
      alert(`Something went wrong! - ${error.response.data.message}`);
    }
  }
}, [isProcessing, data, error]);

我的问题分为两部分:

  • 我在服务端处理错误的方式是否正确?
  • 我在客户端处理潜在错误的方式是否正确?说实话,error.response.data.message看起来有点奇怪,但它确实能获取到服务端发送的错误信息。

备注:内容来源于stack exchange,提问作者RobertW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 09:29:32