域名 AXUM.RS 将于 2025 年 10 月到期。我们无意再对其进行续费,如果你有意接续这个域名,请与我们取得联系。
  • AXUM.RS 现仅需人民币 3000 元(大写:叁仟元整。接受适度议价
  • 按照行业规则,AXUM.RS 到期后,大概率会进入长时间的赎回期,该期间内,如果你想拥有该域名,将要付出高额的费用
  • 我们已启用 AXUM.EU.ORG 域名,并将持续运营
  • 仅接受微信或支付宝交易
如果你对 AXUM.RS 有兴趣,请和我们进行联系:

错误处理

本章将讨论 Next.js 的错误处理。

// app/not-found.js

import React from "react";

export default function NotFound() {
  return <div>你访问的页面不存在</div>;
}

遵循层级机制:从当前路由同级目录开始找,然后到父路由里找,最后到 App 根目录找。如果均未找到,使用 Next.js 自带的。

服务内部错误处理

遵循层级机制:从当前路由同级目录开始找,然后到父路由里找,最后到 App 根目录找。如果均未找到,使用 Next.js 自带的。

page.js

"use client"; // Error 必须是客户端组件

import { useEffect } from "react";

export default function Error({ error, reset }) {
  useEffect(() => {
    // 打印日志
    console.error(error);
  }, [error]);

  return (
    <div>
      <h2>××博客详情×× 出错了</h2>
      <button
        onClick={
          // 重试
          () => reset()
        }
      >
        重试
      </button>
    </div>
  );
}

layout.js

本规则同样适用于 template.js

layout.js 的错误由父路由(而不是本路由)的 error.js 处理

app/layout.js

对于根布局,由于它已经是最顶层的路由,没有父路由了,所以它的错误由 app/global-error.js 处理。

"use client";

export default function GlobalError({ error, reset }) {
  return (
    <html>
      <body>
        <h2>[global-error] 出错啦!</h2>
        <div>{error.toString()}</div>
        <button onClick={() => reset()}>重试</button>
      </body>
    </html>
  );
}
要查看完整内容,请先登录