tRPC-virheiden hallittu käsittely
Toteuttakaa parhaat käytännöt virheiden sieppaamiseen ja niihin vastaamiseen tRPC-proseduureissa ja -middlewaressa.
tRPC-virheiden hallittu käsittely on ilmainen tRPC:n tyyppiturvalliset API:t päästä päähän-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu tRPC:n tyyppiturvalliset API:t päästä päähän-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. tRPC:n tyyppiturvalliset API:t päästä päähän-kurssilla on yhteensä 4 oppituntia.
API-virheet: välttämätön paha
Kaikissa vankkarakenteisissa API-rajapinnoissa virheet ovat väistämättömiä. Käyttäjät voivat lähettää virheellisiä tietoja, resursseja ei ehkä ole olemassa tai ulkoiset palvelut voivat lakata toimimasta.
Hallittu virheenkäsittely on ratkaisevan tärkeää vakaiden ja käyttäjäystävällisten sovellusten luomisessa. Sen ansiosta API voi vastata ennakoitavasti ja informatiivisesti.
Miten tRPC käsittelee virheitä
Oletusarvoisesti tRPC sieppaa automaattisesti kaikki JavaScript-virheet, jotka heitetään proseduureissa tai middlewareissä. Se sarjallistaa virheet ja lähettää ne asiakkaalle.
Jos yleisiä virheitä ei käsitellä erikseen, ne muunnetaan asiakkaan puolella usein INTERNAL_SERVER_ERROR-tilaksi (HTTP 500). Suorittakaa tämä esimerkki nähdäksenne yleisen virheen.
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();Virheiden yhdenmukaistaminen TRPCError-virheen avulla
Jäsenneltyjen ja ennakoitavien virhevastausten tarjoamiseksi tRPC tarjoaa TRPCError-luokan. Se on tRPC:n oma tapa heittää API-kohtaisia virheitä.
TRPCErrorantaa määrittääcode-koodin (kuten HTTP-tilakoodin) ja ihmisen ymmärrettävissä olevanmessage-viestin.- Se varmistaa virhekuormien yhdenmukaisuuden, jolloin asiakkaiden on helpompi tulkita eri virhetyyppejä ja reagoida niihin.
TRPCError-virheen rakenne
Kun luot TRPCError-virheen, välität sille olion, jossa on code ja message. code vastaa HTTP-standardin tilakoodeja (esimerkiksi NOT_FOUND ja UNAUTHORIZED).
Tässä esimerkissä näytetään, miten ehtojen perusteella heitetään erityyppisiä TRPCError-virheitä.
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}`);
}
}
}Virheiden käsittely prosedyyreissä
tRPC-proseduurisi sisältävät sovelluksen keskeisen liiketoimintalogiikan. On hyvä käytäntö kääriä mahdollisesti epäonnistuvat toiminnot, kuten tietokantakutsut tai API-pyynnöt, try...catch-lohkoihin.
catch-lohkossa voit muuntaa yleiset virheet erityisiksi TRPCError-instansseiksi ja antaa asiakkaalle selkeän palautteen.
Esimerkki: proseduurin virheenkäsittely
Tässä esimerkissä simuloidaan proseduuria, joka yrittää hakea käyttäjän tietokannasta. Esimerkki käsittelee sekä puuttuvan käyttäjän että tietokantayhteysvirheen ja muuntaa ne sopiviksi TRPCError-tyypeiksi.
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}`);
}
}Virheiden käsittely väliohjelmistossa
tRPC-väliohjelmistofunktiot suoritetaan ennen prosedyyrejä. Ne sopivat erinomaisesti yleisiin tarkistuksiin, kuten autentikointiin, valtuutukseen ja lokitukseen.
Jos väliohjelmistofunktio heittää TRPCError-virheen, sen suojaamaa proseduuria ei suoriteta, vaan virhe välitetään heti asiakkaalle. Tämä on tehokas tapa suojata API:a.
Esimerkki: väliohjelmiston valtuutusvirhe
Tämä väliohjelmisto tarkistaa, onko käyttäjällä 'admin'-rooli. Jos ei ole, se heittää UNAUTHORIZED-virheen, jolloin seuraavia prosedyyrejä ei suoriteta.
Näin varmistetaan, että vain valtuutetut käyttäjät voivat jatkaa.
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();Virheiden välittäminen asiakkaalle
Kun tRPC-palvelimesi heittää TRPCError-virheen, tRPC-asiakas vastaanottaa jäsennellyn virheolion. Tämä olio sisältää yleensä seuraavat tiedot:
code: tRPC:n virhekoodi (esimerkiksi'NOT_FOUND').message: kuvaileva virheviesti.data: virheen lisätiedot, mukaan lukien HTTP-tilakoodi.
Tämän ansiosta käyttöliittymä voi reagoida eri virhetyyppeihin tarkoituksenmukaisesti, mikä parantaa käyttökokemusta.
Virheenkäsittelyn tarkistus
Oletetaan, että tRPC-proseduuri hakee blogikirjoituksen. Jos pyynnön tekevä käyttäjä on autentikoitu, mutta hänellä ei ole tarvittavia oikeuksia tarkastella kyseistä kirjoitusta, mikä TRPCError-koodi olisi sopivin heittää?
Kertaus: hallitut virheet
Olet oppinut käsittelemään virheitä hallitusti tRPC:ssä!
- tRPC sieppaa yleiset virheet automaattisesti, mutta
TRPCErrortarjoaa niille rakenteen. - Käytä
TRPCError-virheitä yhdessä erityistencode-koodien, kutenNOT_FOUNDjaUNAUTHORIZED, sekä viestien kanssa. - Toteuta prosedyyreissä
try...catchmuuntaaksesi yleiset virheetTRPCError-virheiksi. - Hyödynnä väliohjelmistoa yleisten tarkistusten, kuten autentikoinnin, tekemiseen heittämällä
TRPCError-virheet jo varhaisessa vaiheessa. - Asiakkaat vastaanottavat jäsenneltyjä virheolioita, mikä mahdollistaa käyttöliittymän paremman virheenkäsittelyn.
Opi tRPC:n tyyppiturvalliset API:t päästä päähän tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 10
- Oppitunnit
- 40
Usein kysytyt kysymykset
Onko oppitunti ”tRPC-virheiden hallittu käsittely” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa tRPC:n tyyppiturvalliset API:t päästä päähän-oppimispolun 3 oppituntia, myös oppitunnin “tRPC-virheiden hallittu käsittely”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. tRPC:n tyyppiturvalliset API:t päästä päähän-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”tRPC-virheiden hallittu käsittely”?
Toteuttakaa parhaat käytännöt virheiden sieppaamiseen ja niihin vastaamiseen tRPC-proseduureissa ja -middlewaressa. Harjoittelet tRPC:n tyyppiturvalliset API:t päästä päähän-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni tRPC:n tyyppiturvalliset API:t päästä päähän-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin tRPC:n tyyppiturvalliset API:t päästä päähän-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”tRPC-virheiden hallittu käsittely”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä tRPC:n tyyppiturvalliset API:t päästä päähän-oppitunnilla?
Kyllä. Jokainen tRPC:n tyyppiturvalliset API:t päästä päähän-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- tRPC-virheiden hallittu käsittely
- Mukautetut virhetyypit
- Datan muuntimet serialisointiin
- Virheiden muotoilu ja kenttäkohtainen validointipalaute