---
title: "<NuxtErrorBoundary>"
description: "<NuxtErrorBoundary> 组件处理默认插槽中发生的客户端错误。"
canonical_url: "https://nuxt.zhcndoc.com/docs/4.x/api/components/nuxt-error-boundary"
---
# \<NuxtErrorBoundary>

> \<NuxtErrorBoundary> 组件处理默认插槽中发生的客户端错误。

::tip
`<NuxtErrorBoundary>` 在底层使用了 Vue 的 [`onErrorCaptured`](https://vue.zhcndoc.com/api/composition-api-lifecycle#onerrorcaptured) 钩子。
::

## 事件

- `@error`：当组件的默认插槽抛出错误时触发的事件。
  ```vue [app/app.vue]
  <template>
    <NuxtErrorBoundary @error="logSomeError">
      <!-- ... -->
    </NuxtErrorBoundary>
  </template>
  ```

## 插槽

- `#error`：指定在发生错误时显示的回退内容。
  ```vue [app/app.vue]
  <template>
    <NuxtErrorBoundary>
      <!-- ... -->
      <template #error="{ error, clearError }">
        <p>发生错误：{{ error }}</p>

        <button @click="clearError">
          清除错误
        </button>
      </template>
    </NuxtErrorBoundary>
  </template>
  ```

::read-more{to="https://nuxt.zhcndoc.com/docs/4.x/getting-started/error-handling"}
::

## 示例

### 在脚本中访问 `error` 和 `clearError`

你可以在组件的脚本中像下面这样访问 `error` 和 `clearError` 属性：

```vue [app/app.vue]
<template>
  <NuxtErrorBoundary ref="errorBoundary">
    <!-- ... -->
  </NuxtErrorBoundary>
</template>

<script setup lang="ts">
const errorBoundary = useTemplateRef('errorBoundary')

// errorBoundary.value?.error
// errorBoundary.value?.clearError()
</script>
```

---

- [源码](https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/components/nuxt-error-boundary.vue)


## Sitemap

See the full [sitemap](https://nuxt.zhcndoc.com/sitemap.md) for all pages.
