ऐक्शन में त्रुटि प्रबंधन
उपयोगकर्ताओं को विश्वसनीय प्रतिक्रिया देने के लिए Server Actions में प्रभावी त्रुटि प्रबंधन रणनीतियाँ लागू करें
ऐक्शन में त्रुटि प्रबंधन, CoddyKit पर Next.js 15 फुलस्टैक (App Router + Server Actions) का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Next.js 15 फुलस्टैक (App Router + Server Actions) सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Next.js 15 फुलस्टैक (App Router + Server Actions) पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
मज़बूत सर्वर एक्शन
अनुप्रयोग बनाते समय चीज़ें गलत हो सकती हैं! डेटा अमान्य हो सकता है, डेटाबेस तक पहुँचना संभव नहीं हो सकता या कोई बाहरी API विफल हो सकता है।
सर्वर एक्शन में प्रभावी त्रुटि प्रबंधन सहज उपयोगकर्ता अनुभव और डेटा की अखंडता बनाए रखने के लिए अत्यंत महत्वपूर्ण है। यह अनुप्रयोग के क्रैश होने से रोकता है और स्पष्ट प्रतिक्रिया देता है।
`try-catch` ब्लॉक
JavaScript/TypeScript में संभावित त्रुटियों को संभालने का मूल तरीका try-catch ब्लॉक का उपयोग करना है। इससे आप कोड चलाने का 'प्रयास' कर सकते हैं और होने वाली किसी भी त्रुटि को 'पकड़' सकते हैं।
tryब्लॉक के अंदर का कोड चलाया जाता है।- यदि कोई त्रुटि होती है, तो निष्पादन
catchब्लॉक पर चला जाता है। catchब्लॉक को त्रुटि ऑब्जेक्ट मिलता है, जिससे आप उसे उचित तरीके से संभाल सकते हैं।
सर्वर एक्शन में त्रुटि का उदाहरण
आइए एक ऐसे सरल सर्वर एक्शन को देखें जो विफल हो सकता है। मान लीजिए कि कोई एक्शन दो संख्याओं को विभाजित करता है, लेकिन उनमें से एक शून्य हो सकती है।
त्रुटि प्रबंधन के बिना, शून्य से विभाजन एक्शन को क्रैश कर सकता है और क्लाइंट-साइड फ़ॉर्म सबमिशन को भी प्रभावित कर सकता है।
export async function divideNumbers(formData: FormData) {
const num1 = Number(formData.get('num1'));
const num2 = Number(formData.get('num2'));
if (num2 === 0) {
throw new Error('Cannot divide by zero!');
}
const result = num1 / num2;
return { success: true, result };
}सर्वर पर त्रुटियाँ पकड़ना
एक्शन को क्रैश होने से रोकने के लिए, हम जोखिम वाले कोड को try-catch ब्लॉक में रखते हैं। इससे हम सर्वर पर त्रुटि का लॉग बना सकते हैं और संवेदनशील त्रुटि विवरण क्लाइंट तक पहुँचने से रोक सकते हैं।
export async function divideNumbers(formData: FormData) {
try {
const num1 = Number(formData.get('num1'));
const num2 = Number(formData.get('num2'));
if (num2 === 0) {
throw new Error('Cannot divide by zero!');
}
const result = num1 / num2;
return { success: true, result };
} catch (error: any) {
console.error('Action Error:', error.message); // Log on server
// Do NOT return `error` object directly to client!
return { success: false, error: 'An unexpected error occurred.' };
}
}क्लाइंट के अनुकूल त्रुटियाँ लौटाना
सर्वर पर त्रुटि पकड़ने के बाद, हमें अर्थपूर्ण और क्लाइंट के अनुकूल संदेश लौटाना चाहिए। यह संदेश उपयोगकर्ताओं को यह समझने में सहायता करता है कि आंतरिक सर्वर विवरण उजागर किए बिना क्या गलत हुआ।
success: falseफ़्लैग वाला ऑब्जेक्ट लौटाएँ।- उपयोगकर्ता के अनुकूल संदेश वाली
errorप्रॉपर्टी शामिल करें। - सुरक्षा के लिए कच्चे त्रुटि स्टैक ट्रेस क्लाइंट को भेजने से बचें।
क्लाइंट को त्रुटि लौटाने वाला एक्शन
क्लाइंट को विशिष्ट त्रुटि संदेश लौटाने पर हमारा divideNumbers एक्शन इस तरह दिखाई देता है:
ध्यान दें कि अलग-अलग त्रुटियों के लिए अलग-अलग संदेश मिलते हैं और अप्रत्याशित त्रुटियों के लिए एक सामान्य संदेश का उपयोग किया जाता है।
export async function divideNumbers(formData: FormData) {
try {
const num1 = Number(formData.get('num1'));
const num2 = Number(formData.get('num2'));
if (isNaN(num1) || isNaN(num2)) {
throw new Error('Invalid input: Please enter numbers.');
}
if (num2 === 0) {
throw new Error('Division by zero is not allowed.');
}
const result = num1 / num2;
return { success: true, result };
} catch (error: any) {
console.error('Server Action Failed:', error.message);
return { success: false, error: error.message || 'Unknown error occurred.' };
}
}क्लाइंट-साइड त्रुटि प्रदर्शन
क्लाइंट पर Server Action को कॉल करने के बाद, आपको लौटाई गई ऑब्जेक्ट प्राप्त होगी। इसके बाद आप अपने यूआई को अपडेट करने के लिए success और error प्रॉपर्टी जाँच सकते हैं।
इससे आप उपयोगकर्ता को त्रुटि संदेश दिखा सकते हैं, फ़ॉर्म के कुछ हिस्सों को अक्षम कर सकते हैं या अन्य सुधारात्मक कार्रवाइयाँ कर सकते हैं।
import { useState } from 'react';
import { divideNumbers } from './actions'; // Your Server Action
export default function CalculatorForm() {
const [message, setMessage] = useState('');
async function handleSubmit(formData: FormData) {
const res = await divideNumbers(formData);
if (res.success) {
setMessage(`Result: ${res.result}`);
} else {
setMessage(`Error: ${res.error}`);
}
}
return (
<form action={handleSubmit}>
<input type="number" name="num1" />
<input type="number" name="num2" />
<button type="submit">Calculate</button>
{message && <p>{message}</p>}
</form>
);
}React `useFormState` हुक
फ़ॉर्म के लिए, React का useFormState हुक विशेष रूप से Server Action से लौटाई गई स्थिति को प्रबंधित करने के लिए बनाया गया है। यह फ़ॉर्म सबमिट करने के बाद सफलता या त्रुटि संदेश जैसी प्रतिक्रिया दिखाना आसान बनाता है।
यह आपकी कार्रवाई और प्रारंभिक स्थिति लेता है तथा वर्तमान स्थिति और एक अपडेट की गई कार्रवाई लौटाता है, जिसे आप अपने <form> के action प्रॉप में पास करते हैं।
त्रुटियों के लिए `useFormState` का उपयोग
अपने फ़ॉर्म घटक के भीतर सीधे त्रुटि संदेश दिखाने के लिए useFormState को इस तरह जोड़ा जा सकता है। इससे कार्रवाई की प्रतिक्रिया को संभालना बहुत सुव्यवस्थित हो जाता है।
import { useFormState } from 'react-dom';
import { divideNumbers } from './actions';
const initialState = { success: false, error: '', result: null };
export default function CalculatorForm() {
const [state, formAction] = useFormState(divideNumbers, initialState);
return (
<form action={formAction}>
<input type="number" name="num1" placeholder="Number 1" />
<input type="number" name="num2" placeholder="Number 2" />
<button type="submit">Calculate</button>
{state.success && <p>Result: {state.result}</p>}
{!state.success && state.error && <p style={{ color: 'red' }}>{state.error}</p>}
</form>
);
}Server Action की त्रुटियों को संभालना
Next.js Server Action के भीतर पकड़ी गई त्रुटियों को संभालने के लिए निम्नलिखित में से कौन-सा BEST तरीका है?
पुनरावलोकन: त्रुटि प्रबंधन
आपने Next.js Server Actions में त्रुटि प्रबंधन अच्छी तरह सीख लिया है!
- सर्वर पर त्रुटियों को सहजता से संभालने के लिए
try-catchब्लॉक का उपयोग करें। - डिबगिंग और निगरानी के लिए सर्वर-साइड त्रुटियों का लॉग रखें।
- एक संरचित ऑब्जेक्ट (जैसे,
{ success: false, error: 'message' }) का उपयोग करके क्लाइंट के लिए अनुकूल त्रुटि संदेश लौटाएँ। - अपने फ़ॉर्म में कार्रवाई के परिणामों और त्रुटियों को आसानी से प्रबंधित करने और दिखाने के लिए React के
useFormStateहुक का उपयोग करें।
मज़बूत त्रुटि प्रबंधन आपके अनुप्रयोगों को अधिक विश्वसनीय और उपयोगकर्ता-अनुकूल बनाता है!
एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 22
- पाठ
- 88
अक्सर पूछे जाने वाले प्रश्न
क्या “ऐक्शन में त्रुटि प्रबंधन” पाठ निःशुल्क है?
हाँ — Next.js 15 फुलस्टैक (App Router + Server Actions) अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “ऐक्शन में त्रुटि प्रबंधन” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Next.js 15 फुलस्टैक (App Router + Server Actions) पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“ऐक्शन में त्रुटि प्रबंधन” में मैं क्या सीखूँगा?
उपयोगकर्ताओं को विश्वसनीय प्रतिक्रिया देने के लिए Server Actions में प्रभावी त्रुटि प्रबंधन रणनीतियाँ लागू करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Next.js 15 फुलस्टैक (App Router + Server Actions) का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Next.js 15 फुलस्टैक (App Router + Server Actions) शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Next.js 15 फुलस्टैक (App Router + Server Actions) शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“ऐक्शन में त्रुटि प्रबंधन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Next.js 15 फुलस्टैक (App Router + Server Actions) पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Next.js 15 फुलस्टैक (App Router + Server Actions) पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- सर्वर ऐक्शन फ़ॉर्म की बुनियाद
- डेटा में बदलाव और पुनः सत्यापन
- ऐक्शन में त्रुटि प्रबंधन
- Server Actions के साथ आशावादी UI और लंबित अवस्थाएँ