การจัดการข้อผิดพลาดและตัวดักจับส่วนกลาง
จัดการข้อผิดพลาดของคำขอและกำหนดค่าตัวดักจับของ Axios
การจัดการข้อผิดพลาดและตัวดักจับส่วนกลาง เป็นบทเรียน Vue Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Vue Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Vue Academy มีบทเรียนทั้งหมด 3 บทเรียน
คำขออาจล้มเหลว
เครือข่ายอาจขาดหาย เซิร์ฟเวอร์อาจส่งข้อผิดพลาด และโทเค็นอาจหมดอายุ แอปที่ทนทานจะเตรียมรับมือกับความล้มเหลวและตอบสนองอย่างเหมาะสม แทนที่จะหยุดทำงานหรือปล่อยให้ผู้ใช้จ้องตัวหมุนตลอดไป
การครอบคำขอด้วยการลองและจับข้อผิดพลาด
ครอบคำขอที่รอผลลัพธ์ไว้ใน try/catch เพื่อจับข้อผิดพลาด Axios จะส่งข้อผิดพลาดเมื่อเซิร์ฟเวอร์ตอบกลับด้วยสถานะ 4xx หรือ 5xx
async fetchPosts() {
try {
const res = await api.get("/posts")
this.posts = res.data
} catch (err) {
console.error(err)
}
}การตรวจสอบข้อผิดพลาด
ข้อผิดพลาดจาก Axios มีรายละเอียดที่เป็นประโยชน์ error.response จะมีอยู่เมื่อเซิร์ฟเวอร์ตอบกลับมา ส่วนกรณีที่ไม่มีค่านี้มักหมายถึงความล้มเหลวของเครือข่ายหรือหมดเวลา
catch (err) {
if (err.response) {
console.log(err.response.status)
console.log(err.response.data)
} else {
console.log("Network error")
}
}การติดตามสถานะข้อผิดพลาด
เก็บข้อความข้อผิดพลาดไว้ในสถานะแบบรีแอกทีฟ เพื่อให้แม่แบบแสดงข้อความนั้นแก่ผู้ใช้ได้
data() {
return { posts: [], loading: false, error: null }
}การกำหนดข้อผิดพลาด
ล้างข้อผิดพลาดก่อนคำขอแต่ละครั้ง จากนั้นกำหนดข้อความในบล็อกจับข้อผิดพลาด
async fetchPosts() {
this.loading = true
this.error = null
try {
this.posts = (await api.get("/posts")).data
} catch (err) {
this.error = "Could not load posts. Please try again."
} finally {
this.loading = false
}
}การแสดงข้อความข้อผิดพลาด
แสดงข้อผิดพลาดในแม่แบบ เพื่อให้ผู้ใช้เข้าใจว่าเกิดอะไรขึ้นและควรทำอย่างไรต่อ
<template>
<p v-if="loading">Loading...</p>
<p v-else-if="error" class="error">{{ error }}</p>
<ul v-else>
<li v-for="p in posts" :key="p.id">{{ p.title }}</li>
</ul>
</template>อินเตอร์เซปเตอร์คืออะไร
อินเตอร์เซปเตอร์ของ Axios ช่วยให้คุณเรียกใช้โค้ดกับคำขอหรือการตอบกลับทุกรายการโดยอัตโนมัติ เหมาะอย่างยิ่งสำหรับประเด็นที่ใช้ร่วมกันหลายส่วน เช่น การแนบโทเค็นหรือการจัดการข้อผิดพลาดจากจุดศูนย์กลาง
อินเตอร์เซปเตอร์ของคำขอ
อินเตอร์เซปเตอร์ของคำขอจะทำงานก่อนส่งคำขอแต่ละครั้ง ใช้เพื่อแนบส่วนหัวการยืนยันตัวตนกับทุกคำขอจากส่วนกลาง
api.interceptors.request.use(config => {
const token = localStorage.getItem("token")
if (token) {
config.headers.Authorization = "Bearer " + token
}
return config
})อินเตอร์เซปเตอร์ของการตอบกลับ
อินเตอร์เซปเตอร์ของการตอบกลับจะทำงานหลังจากได้รับการตอบกลับแต่ละครั้ง โดยรับฟังก์ชันเรียกกลับสองรายการ รายการหนึ่งสำหรับความสำเร็จและอีกรายการสำหรับข้อผิดพลาด
api.interceptors.response.use(
response => response,
error => {
if (error.response && error.response.status === 401) {
// redirect to login
}
return Promise.reject(error)
}
)การจัดการข้อผิดพลาดจากส่วนกลาง
การรวมตรรกะข้อผิดพลาดไว้ในอินเตอร์เซปเตอร์ของการตอบกลับช่วยให้คอมโพเนนต์แต่ละตัวสะอาดและกระชับ กรณีทั่วไป เช่น 401 (ออกจากระบบ) หรือ 500 (แสดงการแจ้งเตือนแบบโทสต์) จะอยู่ในจุดเดียว
api.interceptors.response.use(
res => res,
error => {
const status = error.response ? error.response.status : null
if (status === 401) logout()
if (status >= 500) showToast("Server error, try later")
return Promise.reject(error)
}
)ตรรกะการลองใหม่อย่างง่าย
สำหรับเครือข่ายที่ไม่เสถียร คุณสามารถลองส่งคำขอที่ล้มเหลวใหม่ได้จำนวนครั้งจำกัดก่อนยอมแพ้
async function getWithRetry(url, retries = 2) {
try {
return await api.get(url)
} catch (err) {
if (retries > 0) {
return getWithRetry(url, retries - 1)
}
throw err
}
}ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับการจัดการข้อผิดพลาดและอินเตอร์เซปเตอร์
ทบทวน
ครอบคำขอด้วย try/catch แสดงข้อความ error ที่เป็นมิตรในส่วนติดต่อผู้ใช้ และตรวจสอบ error.response เพื่อแยกความล้มเหลวของเซิร์ฟเวอร์ออกจากความล้มเหลวของเครือข่าย อินเตอร์เซปเตอร์ช่วยรวมประเด็นต่าง ๆ ไว้ที่ส่วนกลาง อินเตอร์เซปเตอร์ของคำขอจะแนบโทเค็น อินเตอร์เซปเตอร์ของการตอบกลับจะจัดการข้อผิดพลาดส่วนกลาง และตัวช่วยลองใหม่ขนาดเล็กจะเพิ่มความทนทาน ต่อไปคุณจะปรับปรุงประสิทธิภาพของแอป
คำถามที่พบบ่อย
บทเรียน “การจัดการข้อผิดพลาดและตัวดักจับส่วนกลาง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การจัดการข้อผิดพลาดและตัวดักจับส่วนกลาง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Vue Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Vue Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การจัดการข้อผิดพลาดและตัวดักจับส่วนกลาง”
จัดการข้อผิดพลาดของคำขอและกำหนดค่าตัวดักจับของ Axios คุณปฏิบัติ Vue Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Vue Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Vue Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน
บทเรียน “การจัดการข้อผิดพลาดและตัวดักจับส่วนกลาง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Vue Academy นี้ได้ไหม
ได้ บทเรียน Vue Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คำขอ HTTP ด้วย Axios
- ฮุกวงจรชีวิตและการดึงข้อมูล
- การจัดการข้อผิดพลาดและตัวดักจับส่วนกลาง