createError
建立帶有額外元資料的錯誤物件。
您可以使用此函式建立帶有額外元資料的錯誤物件。它可用於您的應用程式的 Vue 和 Nitro 部分,且旨在拋出。
參數
err
:string | { cause, data, message, name, stack, statusCode, statusMessage, fatal }
您可以傳遞字串或物件給 createError
函式。如果您傳遞字串,它將用作錯誤 message
,且 statusCode
將預設為 500
。如果您傳遞物件,您可以設定錯誤的多個屬性,例如 statusCode
、message
和其他錯誤屬性。
在 Vue 應用程式中
如果您拋出使用 createError
建立的錯誤
- 在伺服器端,它將觸發全螢幕錯誤頁面,您可以使用
clearError
清除它。 - 在客戶端,它將拋出非致命錯誤供您處理。如果您需要觸發全螢幕錯誤頁面,那麼您可以透過設定
fatal: true
來做到這一點。
範例
pages/movies/[slug].vue
<script setup lang="ts">
const route = useRoute()
const { data } = await useFetch(`/api/movies/${route.params.slug}`)
if (!data.value) {
throw createError({ statusCode: 404, statusMessage: 'Page Not Found' })
}
</script>
在 API 路由中
使用 createError
以在伺服器 API 路由中觸發錯誤處理。
範例
server/api/error.ts
export default eventHandler(() => {
throw createError({
statusCode: 404,
statusMessage: 'Page Not Found'
})
})
在 API 路由中,建議使用 createError
並傳遞具有簡短 statusMessage
的物件,因為它可以在客戶端存取。否則,傳遞給 API 路由上的 createError
的 message
將不會傳播到客戶端。或者,您可以使用 data
屬性將資料傳遞回客戶端。在任何情況下,始終考慮避免將動態使用者輸入放入訊息中,以避免潛在的安全性問題。