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

Next.js App Router:返回403/500等错误的正确方式是什么?

App Router 无自定义错误页时的常见错误处理方案
  • 直接抛出错误触发默认错误页
    在App Router的服务器组件、页面组件或路由处理逻辑中,无需返回JSON响应,直接抛出Error实例即可触发Next.js内置的默认错误页,效果和Pages Router的默认错误页一致:

    // 500错误示例(服务器/页面组件中)
    throw new Error('Internal Server Error');
    

    对于404错误,推荐使用Next.js提供的notFound()函数,这会直接渲染默认的404页面:

    import { notFound } from 'next/navigation';
    
    // 在需要触发404的逻辑中调用
    notFound();
    

    403权限错误可以直接抛出明确的错误信息,同样会触发默认错误页:

    throw new Error('权限不足,无法访问该资源');
    
  • 区分API路由与页面路由的错误逻辑

    • 页面路由:所有渲染阶段的错误,直接抛出错误就能触发页面级默认错误页,不要用NextResponse.json返回,否则只会返回JSON数据而不触发页面跳转。
    • API路由:如果是给前端接口返回错误状态,使用NextResponse.json带状态码是合理的,但这属于接口响应,不会触发页面级错误页;如果是API路由内部的渲染错误,同样直接抛出错误即可。
  • 客户端组件的错误处理
    在客户端组件中,直接抛出错误,Next.js会自动捕获并展示默认错误界面,无需额外编写自定义错误边界组件。

内容的提问来源于stack exchange,提问作者Sodi Kroehler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:13:16