Mengendalikan Ralat tRPC dengan Baik
Laksanakan amalan terbaik untuk menangkap dan memberikan respons terhadap ralat dalam prosedur serta perisian tengah tRPC.
Mengendalikan Ralat tRPC dengan Baik ialah pelajaran API tRPC Selamat Jenis dari Hujung ke Hujung percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran API tRPC Selamat Jenis dari Hujung ke Hujung, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus API tRPC Selamat Jenis dari Hujung ke Hujung merangkumi sejumlah 4 pelajaran.
Ralat API: Keburukan yang Tidak Dapat Dielakkan
Dalam mana-mana API yang kukuh, ralat tidak dapat dielakkan. Pengguna mungkin menghantar data yang tidak sah, sumber mungkin tidak wujud atau perkhidmatan luaran mungkin gagal.
Melaksanakan pengendalian ralat yang baik amat penting untuk mencipta aplikasi yang stabil dan mesra pengguna. Ini membolehkan API anda memberikan respons yang boleh dijangka dan bermaklumat.
Cara tRPC Mengendalikan Ralat
Secara lalai, tRPC menangkap secara automatik sebarang ralat JavaScript yang dilontarkan dalam prosedur atau perisian tengah anda. tRPC memerinya dan menghantarnya kepada klien.
Jika tidak dikendalikan secara khusus, ralat umum biasanya dipetakan kepada status INTERNAL_SERVER_ERROR (HTTP 500) pada pihak klien. Cuba jalankan contoh ini untuk melihat ralat umum.
function fetchData(shouldFail: boolean) {
if (shouldFail) {
throw new Error("Something went wrong on the server!");
}
return "Data fetched successfully.";
}
function main() {
try {
console.log("Attempting to fetch (success):");
console.log(fetchData(false));
} catch (error: any) {
// This catch block demonstrates local error handling
// tRPC server would catch and serialize if not handled here
console.log(`Caught error: ${error.message}`);
}
try {
console.log("\nAttempting to fetch (fail):");
fetchData(true);
} catch (error: any) {
console.log(`Caught error: ${error.message}`);
}
}
main();Menyeragamkan dengan TRPCError
Untuk menyediakan respons ralat yang berstruktur dan boleh dijangka, tRPC menawarkan kelas TRPCError. Ini ialah cara khusus tRPC untuk mencetuskan ralat yang berkaitan dengan API.
TRPCErrormembolehkan anda menetapkancode(seperti status HTTP) danmessageyang boleh difahami manusia.- Ia memastikan muatan ralat yang konsisten, sekali gus memudahkan klien mentafsir dan bertindak balas terhadap pelbagai jenis ralat.
Anatomi TRPCError
Apabila anda mencipta TRPCError, anda menghantar objek yang mempunyai code dan message. code dipetakan kepada kod status HTTP standard (contohnya, NOT_FOUND, UNAUTHORIZED).
Contoh ini menunjukkan cara mencetuskan pelbagai jenis TRPCError berdasarkan keadaan tertentu.
import { TRPCError } from '@trpc/server';
function simulateError(type: string) {
if (type === 'not_found') {
throw new TRPCError({
code: 'NOT_FOUND',
message: 'Resource does not exist.'
});
}
if (type === 'bad_input') {
throw new TRPCError({
code: 'BAD_REQUEST',
message: 'Invalid input provided.'
});
}
return 'No error was simulated.';
}
function main() {
try {
console.log("Simulating 'not_found' error:");
simulateError('not_found');
} catch (error: any) {
if (error instanceof TRPCError) {
console.log(`TRPC Error Code: ${error.code}`);
console.log(`TRPC Error Message: ${error.message}`);
} else {
console.log(`Generic Error: ${error.message}`);
}
}
}Mengendalikan Ralat dalam Prosedur
Prosedur tRPC anda mengandungi logik perniagaan teras. Amalan yang baik adalah dengan membungkus operasi yang mungkin gagal (seperti panggilan pangkalan data atau permintaan API) dalam blok try...catch.
Dalam blok catch, anda boleh menukar ralat umum kepada tika TRPCError tertentu untuk memberikan maklum balas yang jelas kepada klien.
Contoh: Pengendalian Ralat Prosedur
Contoh ini mensimulasikan prosedur yang cuba mendapatkan pengguna daripada pangkalan data. Ia mengendalikan pengguna yang tiada serta ralat sambungan pangkalan data, lalu menukarkannya kepada jenis TRPCError yang sesuai.
import { TRPCError } from '@trpc/server';
// Simulate a database call
function fetchUserFromDB(id: string) {
if (id === 'db_error') {
throw new Error("Database connection failed!");
}
if (id === '123') {
return { id: '123', name: 'Alice' };
}
return null;
}
// Simulate a tRPC query procedure
function getUserQuery(userId: string) {
try {
const user = fetchUserFromDB(userId);
if (!user) {
throw new TRPCError({
code: 'NOT_FOUND',
message: 'User not found.'
});
}
return user;
} catch (error: any) {
if (error instanceof TRPCError) {
throw error; // Re-throw tRPC errors directly
}
// Catch generic errors and convert them to TRPCError
throw new TRPCError({
code: 'INTERNAL_SERVER_ERROR',
message: `Failed to fetch user: ${error.message}`
});
}
}
function main() {
try {
console.log("Fetching user '123':");
console.log(getUserQuery('123'));
} catch (error: any) {
console.log(`Error: ${error.code} - ${error.message}`);
}
try {
console.log("\nFetching user 'db_error':");
getUserQuery('db_error');
} catch (error: any) {
console.log(`Error: ${error.code} - ${error.message}`);
}
}Pengendalian Ralat dalam Perisian Tengah
Fungsi perisian tengah tRPC dilaksanakan sebelum prosedur. Fungsi ini sesuai untuk pemeriksaan global seperti pengesahan, kebenaran atau pengelogan.
Jika fungsi perisian tengah mencetuskan TRPCError, prosedur yang dilindunginya tidak akan dilaksanakan dan ralat tersebut akan terus disebarkan kepada klien. Ini amat berguna untuk melindungi API anda.
Contoh: Ralat Kebenaran Perisian Tengah
Perisian tengah ini memeriksa sama ada pengguna mempunyai peranan 'admin'. Jika tidak, ia mencetuskan ralat UNAUTHORIZED, lalu menghalang sebarang prosedur seterusnya daripada dijalankan.
Ini memastikan hanya pengguna yang diberi kebenaran boleh meneruskan.
import { TRPCError } from '@trpc/server';
// Simulate a tRPC middleware logic
// In a real tRPC app, `ctx` would contain user info
function authMiddleware(userRole: string) {
if (userRole !== 'admin') {
throw new TRPCError({
code: 'UNAUTHORIZED',
message: 'You are not authorized to perform this action.'
});
}
return { success: true, message: 'Authorized' }; // Simulates `next()`
}
function main() {
console.log("Attempting with 'user' role:");
try {
authMiddleware('user');
} catch (error: any) {
if (error instanceof TRPCError) {
console.log(`Middleware Error: ${error.code} - ${error.message}`);
}
}
console.log("\nAttempting with 'admin' role:");
try {
authMiddleware('admin');
console.log("Middleware passed: User is an admin!");
} catch (error: any) {
console.log("This block should not be reached for admin.");
}
}
main();Penyebaran Ralat pada Sisi Klien
Apabila pelayan tRPC anda mencetuskan TRPCError, klien tRPC menerima objek ralat berstruktur. Objek ini biasanya mengandungi:
code: Kod ralat tRPC (contohnya, 'NOT_FOUND').message: Mesej ralat yang menerangkan masalah.data: Data ralat tambahan, termasuk kod status HTTP.
Ini membolehkan bahagian hadapan bertindak balas secara khusus terhadap pelbagai jenis ralat, sekali gus meningkatkan pengalaman pengguna.
Semakan Pengendalian Ralat
Bayangkan sebuah prosedur tRPC yang mendapatkan catatan blog. Jika pengguna yang membuat permintaan telah disahkan tetapi tidak mempunyai kebenaran yang diperlukan untuk melihat catatan khusus itu, kod TRPCError manakah yang paling sesuai untuk dicetuskan?
Imbas Kembali: Ralat yang Ditangani dengan Baik
Anda telah mempelajari cara mengendalikan ralat dengan baik dalam tRPC!
- tRPC menangkap ralat umum secara automatik, tetapi
TRPCErrormenyediakan struktur. - Gunakan
TRPCErrordengancodetertentu (sepertiNOT_FOUND,UNAUTHORIZED) dan mesej. - Laksanakan
try...catchdalam prosedur untuk menukar ralat umum kepadaTRPCError. - Manfaatkan perisian tengah untuk menguatkuasakan pemeriksaan global (contohnya, pengesahan) dengan mencetuskan
TRPCErrorlebih awal. - Klien menerima objek ralat berstruktur, yang membolehkan pengendalian ralat bahagian hadapan yang lebih baik.
Pelajari API tRPC Selamat Jenis dari Hujung ke Hujung dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 10
- Pelajaran
- 40
Soalan Lazim
Adakah pelajaran “Mengendalikan Ralat tRPC dengan Baik” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran API tRPC Selamat Jenis dari Hujung ke Hujung, termasuk “Mengendalikan Ralat tRPC dengan Baik”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus API tRPC Selamat Jenis dari Hujung ke Hujung merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mengendalikan Ralat tRPC dengan Baik”?
Laksanakan amalan terbaik untuk menangkap dan memberikan respons terhadap ralat dalam prosedur serta perisian tengah tRPC. Anda berlatih API tRPC Selamat Jenis dari Hujung ke Hujung menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan API tRPC Selamat Jenis dari Hujung ke Hujung?
Tiada pengalaman terdahulu diperlukan. Pembelajaran API tRPC Selamat Jenis dari Hujung ke Hujung di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Mengendalikan Ralat tRPC dengan Baik” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran API tRPC Selamat Jenis dari Hujung ke Hujung ini?
Ya. Setiap pelajaran API tRPC Selamat Jenis dari Hujung ke Hujung menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mengendalikan Ralat tRPC dengan Baik
- Jenis Ralat Tersuai
- Pengubah Data untuk Pensirilan
- Memformat Ralat dan Maklum Balas Pengesahan Aras Medan