Share via


त्रुटि हैंडलिंग

नोट

यह आलेख जिस व्यवहार का वर्णन करता है वह केवल तभी उपलब्ध होता है जब सूत्र-स्तरीय त्रुटि प्रबंधन पूर्वावलोकन सुविधा सेटिंग्स>आगामी सुविधाओं>पूर्वावलोकन के माध्यम से चालू हो. अधिक जानकारी: नियंत्रित करना कि कौन-सी सुविधाएँ सक्षम हैं

त्रुटियाँ होती हैं. नेटवर्क नीचे जाते हैं, संग्रहण भर जाता है, अप्रत्याशित मूल्य प्रवाहित होते हैं. यह महत्वपूर्ण है कि संभावित समस्याओं का सामना करने पर आपका तर्क ठीक से काम करता रहे.

डिफ़ॉल्ट रूप से, त्रुटियां ऐप के सूत्रों के माध्यम से प्रवाहित होती हैं और ऐप के अंतिम उपयोगकर्ता को रिपोर्ट की जाती हैं. इस तरह, अंतिम उपयोगकर्ता को पता चलता है कि कुछ अप्रत्याशित हुआ है, वे संभावित रूप से समस्या को एक अलग इनपुट के साथ ठीक कर सकते हैं, या वे ऐप के स्वामी को समस्या की रिपोर्ट कर सकते हैं.

एक ऐप निर्माता के रूप में, आप अपने ऐप में त्रुटियों को नियंत्रित कर सकते हैं:

  • किसी त्रुटि का पता लगाना और संभालना. यदि कोई संभावना है कि कोई त्रुटि हो सकती है, तो त्रुटि की स्थिति का पता लगाने और ऑपरेशन को पुनः प्रयास करने के लिए ऐप के सूत्र लिखे जा सकते हैं. अंतिम उपयोगकर्ता को चिंतित होने की आवश्यकता नहीं है कि त्रुटि हुई क्योंकि निर्माता ने संभावना को ध्यान में रखा था. यह किसी सूत्र के अंदर IfError, IsError, और IsErrorOrBlank फ़ंक्शंस के साथ किया जाता है.
  • त्रुटि की रिपोर्ट करना. यदि किसी त्रुटि को उस सूत्र में नियंत्रित नहीं किया जाता है जहाँ वह आई थी, तब त्रुटि को App.OnError हैंडलर तक बढ़ाया जाता है. यहाँ, त्रुटि को अब बदला नहीं जा सकता क्योंकि यह पहले ही हो चुकी है और यह सूत्र परिकलन का एक हिस्सा है. लेकिन आप यह नियंत्रित करने के लिए App.OnError का उपयोग कर सकते हैं कि अंतिम उपयोगकर्ता को त्रुटि की रिपोर्ट कैसे की जाती है, जिसमें त्रुटि रिपोर्टिंग को एक साथ दबाना भी शामिल है. App.OnError पूरे ऐप में त्रुटि रिपोर्टिंग के लिए एक सामान्य चोक पॉइंट भी प्रदान करता है.
  • कोई त्रुटि बनाना और पुनः फेंकना. अंत में, आप खुद के तर्क से एक त्रुटि स्थिति का पता लगा सकते हैं, ऐसी स्थिति जो आपके ऐप के लिए विशिष्ट है. कस्टम त्रुटियाँ बनाने के लिए त्रुटि फ़ंक्शन का उपयोग करें. त्रुटि फ़ंक्शन का उपयोग IfError या App.OnError में पूछताछ किए जाने के बाद किसी त्रुटि को फिर से निकालने के लिए भी किया जाता है.

आरंभ करें

आइए एक साधारण उदाहरण से शुरू करें.

  1. Power Apps कैनवास ऐप में नई स्क्रीन बनाएँ.
  2. TextInput नियंत्रण डालें. यह नाम TextInput1 के लिए डिफ़ॉल्ट होगा.
  3. लेबल नियंत्रण डालें.
  4. लेबल नियंत्रण के पाठ गुण को सूत्र पर सेट करें
1/Value( TextInput1.Text )

हमारे पास एक त्रुटि है क्योंकि TextInput नियंत्रण का डिफ़ॉल्ट पाठ "Text input" है, जिसे किसी संख्या में परिवर्तित नहीं किया जा सकता है. डिफ़ॉल्ट रूप से यह अच्छी बात है: अंतिम उपयोगकर्ता को एक सूचना मिलेगी कि ऐप में अपेक्षित रूप से कुछ काम नहीं कर रहा है.

ज़ाहिर है, हम नहीं चाहते कि हर बार जब उपयोगकर्ता इस ऐप को शुरू करें तो उनका अभिवादन करने में कोई त्रुटि हो. वैसे भी "Text input" पाठ इनपुट बॉक्स के लिए सही डिफ़ॉल्ट नहीं है. इसका समाधान करने के लिए, आइए TextInput नियंत्रण की Default गुण को इसमें बदलें:

Blank()

त्रुटि बैनर

हम्म, अब हमारे पास एक अलग त्रुटि है. रिक्त के साथ गणितीय संक्रियाएँ, जैसे विभाजन, रिक्त मान को शून्य पर बाध्य कर देगा. और वह अब शून्य त्रुटि से विभाजन का कारण बन रहा है. इसका समाधान करने के लिए, हमें यह तय करने की आवश्यकता है कि इस ऐप में इस स्थिति के लिए उपयुक्त व्यवहार क्या है. जब पाठ इनपुट रिक्त हो तो उत्तर रिक्त दिखाया जा सकता है. हम अपने सूत्र को IfError फ़ंक्शन के साथ रैप करके इसे पूरा कर सकते हैं:

IfError( 1/Value( TextInput1.Text ), Blank() )

कोई त्रुटि बैनर प्रदर्शित नहीं हुआ, रिक्त मान के कारण हुई त्रुटि को रिक्त मान से बदल दिया गया है

अब त्रुटि को एक वैध मान से बदल दिया गया है और त्रुटि बैनर चला गया है. लेकिन, हो सकता है कि हमने ओवरशॉट किया हो, IfError हमने कवर सभी त्रुटियों का उपयोग किया, जिसमें गलत मान टाइप करना शामिल है, जैसे कि "hello". हम अपने ifError को केवल शून्य केस द्वारा विभाजन को हैंडल करने के लिए ट्यूनिंग करके और अन्य सभी त्रुटियों को रीथ्रो करके इसका समाधान कर सकते हैं:

IfError( 1/Value( TextInput1.Text ), 
         If( FirstError.Kind = ErrorKind.Div0, Blank(), Error( FirstError ) ) )

कोई त्रुटि बैनर प्रदर्शित नहीं किया गया है, विशेष रूप से शून्य से विभाजन के कारण हुई त्रुटि को रिक्त स्थान से बदल दिया गया है, अन्यथा त्रुटि फिर से फेंक दी जाती है

तो चलिए अपना ऐप चलाते हैं और कुछ अलग मानों को आजमाते हैं.

बिना किसी मान के, जब ऐप शुरू होता है, तो कोई उत्तर प्रदर्शित नहीं होता है क्योंकि डिफ़ॉल्ट मान रिक्त है, लेकिन कोई त्रुटि भी नहीं दिखाई देती है क्योंकि ifError विभाजन को शून्य त्रुटि से बदल देता है.

कोई उत्तर प्रदर्शित नहीं हुआ और कोई त्रुटि बैनर नहीं

यदि हम 4 टाइप करते हैं, तो हमें 0.25 का अपेक्षित परिणाम मिलता है:

0.25 प्रदर्शित और कोई त्रुटि बैनर नहीं

और अगर हम कुछ अवैध टाइप करते हैं, जैसे hello, तो हमें एक त्रुटि बैनर प्राप्त होगा:

कोई मान प्रदर्शित नहीं हुआ और

यह एक साधारण परिचयात्मक उदाहरण है. ऐप की ज़रूरतों के आधार पर त्रुटि से निपटने को कई अलग-अलग तरीकों से किया जा सकता है:

  1. किसी त्रुटि बैनर के बजाय, हम सूत्र के साथ लेबल नियंत्रण में "#Error" दिखा सकते थे. प्रतिस्थापन के प्रकार को IfError के पहले तर्क के साथ संगत रखने के लिए, हमें संख्यात्मक परिणाम को पाठ फ़ंक्शन के साथ पाठ स्ट्रिंग में स्पष्ट रूप से परिवर्तित करने की आवश्यकता है.
    IfError( Text( 1/Value( TextInput1.Text ) ), 
             If( FirstError.Kind = ErrorKind.Div0, Blank(), "#Error" )
    
    कोई त्रुटि बैनर नहीं है और इसके बजाय #Error परिणाम के रूप में दिखाया गया है
  2. इस विशिष्ट आवृत्ति को IfError के साथ रैप करने के बजाय हम एक केंद्रीकृत App.OnError हैंडलर लिख सकते थे. हम "#Error" के साथ दिखाए गए स्ट्रिंग को बदल नहीं सकते क्योंकि त्रुटि पहले ही हो चुकी है और App.OnError केवल रिपोर्टिंग को नियंत्रित करने के लिए प्रदान किया जाता है.
    If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ) )
    

त्रुटि प्रसारण

त्रुटियों का प्रवाह सूत्रों के माध्यम से उतना ही होता है जितना वे Excel में करते हैं. उदाहरण के लिए Excel में, यदि सेल A1 में सूत्र =1/0 है, तो A1 त्रुटि मान प्रदर्शित करेगा #DIV0!:

A1=1/0 और #DIV/0 के साथ एक्सेल स्प्रेडशीट! सेल में दिखाया गया है

यदि सेल A2A1 को =A1*2 जैसे किसी सूत्र से संदर्भित करता है, तो त्रुटि उस सूत्र द्वारा भी प्रसारित होती है:

A2=A1*2 और #DIV/0 के साथ एक्सेल स्प्रेडशीट! सेल में दिखाया गया है

त्रुटि उस मान को प्रतिस्थापित करती है जिसकी गणना अन्यथा की जाती. सेल A2 में गुणन का कोई परिणाम नहीं है, केवल A1 में विभाजन से त्रुटि है.

Power Fx उसी तरह काम करता है. सामान्य तौर पर, यदि किसी फ़ंक्शन या ऑपरेटर को एक तर्क के रूप में एक त्रुटि प्रदान की जाती है, तो ऑपरेशन नहीं होगा और ऑपरेशन के परिणाम के रूप में इनपुट त्रुटि प्रवाहित होगी. उदाहरण के लिए, Mid( Text( 1/0 ), 1, 1 ) शून्य त्रुटि द्वारा एक विभाजन लौटाएगा, क्योंकि सबसे भीतरी त्रुटि पाठ फ़ंक्शन और मिड फ़ंक्शन से होकर गुजरती है:

त्रुटि बैनर अमान्य ऑपरेशन दिखा रहा है: शून्य से विभाजन

सामान्य तौर पर, त्रुटियाँ Power Apps नियंत्रण गुणों से होकर नहीं गुजरती हैं. चलिए पिछले उदाहरण को एक अतिरिक्त नियंत्रण के साथ विस्तारित करते हैं जो प्रदर्शित करता है कि क्या पहले लेबल का Text गुण एक त्रुटि स्थिति है:

दूसरे लेबल नियंत्रण पर कोई त्रुटि नहीं दिखाई गई

यह ठीक है कि त्रुटियां नियंत्रण के माध्यम से प्रसारित नहीं होती हैं क्योंकि सिस्टम सभी नियंत्रण गुणों के इनपुट पर त्रुटियों का निरीक्षण करेगा. त्रुटि गुम नहीं होगी.

अधिकांश फ़ंक्शन और ऑपरेटर "एरर इन, एरर आउट" नियम का पालन करते हैं, लेकिन कुछ अपवाद हैं. फ़ंक्शंस IsError, IsErrorOrBlank, और IfError त्रुटियों के साथ काम करने के लिए डिज़ाइन किए गए हैं ताकि वे एक त्रुटि वापस न करें, भले ही उनमें कोई त्रुटि हों.

त्रुटियों का अवलोकन

जब तक उनके मान का उपयोग नहीं किया जाता तब तक त्रुटियाँ नहीं देखी जातीं.

परिणामस्वरूप, If और Select फ़ंक्शन भी त्रुटि वापस नहीं कर सकते हैं यदि कोई पास हो जाता है. If( false, 1/0, 3 ) सूत्र पर विचार करें. इस सूत्र में शून्य त्रुटि से विभाजन मौजूद है, लेकिन चूंकि Iffalse के कारण वह शाखा नहीं ले रहा है, Power Fx और Power Apps नहीं लेंगे त्रुटि रिपोर्ट करें:

लेबल टेक्स्ट प्रॉपर्टी में इफ़ फ़ंक्शन के साथ कोई त्रुटि बैनर नहीं दिखाया गया है

त्रुटि के साथ सेट फ़ंक्शन का उपयोग करने से उस बिंदु पर त्रुटि की सूचना नहीं मिलेगी जहाँ त्रुटि को वेरिएबल में रखा गया है. उदाहरण के लिए Power Apps में, यहाँ App.OnStart में एक सूत्र दिया गया है, जो वेरिएबल x में शून्य त्रुटि द्वारा एक विभाजन रखता है:

App.OnStart में सेट फ़ंक्शन कॉल के साथ कोई त्रुटि बैनर नहीं दिखाया गया

कोई त्रुटि रिपोर्ट नहीं की गई है, क्योंकि x संदर्भित नहीं किया जा रहा है. हालांकि, जैसे ही हम एक लेबल नियंत्रण जोड़ते हैं और इसके पाठ गुण को x पर सेट करते हैं, तो त्रुटि प्रदर्शित होती है:

वेरिएबल x को संदर्भित करने वाले लेबल नियंत्रण के साथ त्रुटि बैनर दिखाया गया है

यह IfError, IsError, और IsErrorOrBlank फ़ंक्शंस के साथ किसी सूत्र के अंदर त्रुटियों का अवलोकन कर सकते हैं. इन कार्यों के साथ, आप एक वैकल्पिक मान वापस कर सकते हैं, वैकल्पिक क्रिया कर सकते हैं, या त्रुटि को देखने और रिपोर्ट करने से पहले संशोधित कर सकते हैं.

त्रुटियों की रिपोर्ट करना

एक त्रुटि दिखाई देने के बाद, अगला चरण अंतिम उपयोगकर्ता को त्रुटि की रिपोर्ट करना है.

Excel के विपरीत, त्रुटि परिणाम दिखाने के लिए हमेशा एक सुविधाजनक स्थान नहीं होता है, क्योंकि सूत्र के परिणाम नियंत्रण के एक्स और वाई निर्देशांक जैसे गुण चला सकते हैं जिसके लिए कुछ पाठ दिखाने के लिए कोई सुविधाजनक स्थान नहीं है. प्रत्येक Power Fx होस्ट यह नियंत्रित करता है कि अंतत: अंतिम उपयोगकर्ता को त्रुटियां कैसे दिखाई जाती हैं और निर्माता का इस प्रक्रिया पर कितना नियंत्रण होता है. Power Apps में, एक त्रुटि बैनर दिखाया जाता है और App.OnError का उपयोग यह नियंत्रित करने के लिए किया जाता है कि त्रुटि की रिपोर्ट कैसे की जाती है.

यह नोट करना महत्वपूर्ण है कि App.OnError त्रुटि को उसी तरह से नहीं बदल सकता जैसे IfError कर सकता है. उस बिंदु पर जब App.OnError निष्पादित किया जाता है, त्रुटि पहले ही हो चुकी है, और परिणाम अन्य सूत्रों के माध्यम से प्रसारित हो गया है. App.OnError केवल यह नियंत्रित करता है कि अंतिम उपयोगकर्ता को त्रुटि की रिपोर्ट कैसे की जाती है और निर्माता को वांछित होने पर त्रुटि लॉग करने के लिए हुक प्रदान करता है.

कार्यक्षेत्र वेरिएबल FirstError और AllErrors त्रुटि या त्रुटियों के बारे में संदर्भ जानकारी प्रदान करते हैं. यह त्रुटि के प्रकार के बारे में जानकारी प्रदान करता है और त्रुटि कहाँ उत्पन्न हुई और यह कहाँ देखी गई.

त्रुटि के बाद रोकना

व्यवहार सूत्र क्रिया करने, डेटाबेस को संशोधित करने और स्थिति बदलने में सहायता करते हैं. ये सूत्र ; चेनिंग ऑपरेटर (या ;; लोकेल के आधार पर) का उपयोग करके अनुक्रम में एक से अधिक क्रियाएँ करने की अनुमति देते हैं.

इस मामले में, उदाहरण के लिए, ग्रिड नियंत्रण दिखा रहा है कि T तालिका में क्या है. प्रत्येक बटन चयन दो पैच कॉल वाली इस तालिका में स्थिति को बदलता है:

प्रत्येक बटन क्लिक के बाद तालिका टी में दो रिकॉर्ड को यादृच्छिक संख्याओं के साथ अपडेट किया जा रहा एनीमेशन दिखा रहा है

एक पंक्तिबद्ध व्यवहार सूत्र में, पहली त्रुटि के बाद क्रियाएं बंद नहीं होती हैं. पहले पैच कॉल में एक अमान्य इंडेक्स नंबर पास करने के लिए अपने उदाहरण को संशोधित करते हैं. दूसरी पैच पहले की इस त्रुटि के बावजूद जारी है. पहली त्रुटि अंतिम उपयोगकर्ता को रिपोर्ट की जाती है, और नियंत्रण पर स्टूडियो में त्रुटि के रूप में दिखाई जाती है:

एनीमेशन तालिका टी में केवल दूसरा रिकॉर्ड दिखा रहा है जिसे प्रत्येक बटन क्लिक के बाद यादृच्छिक संख्याओं के साथ अद्यतन किया जा रहा है, पहले रिकॉर्ड के परिणामस्वरूप त्रुटि हुई

ifError किसी त्रुटि के बाद निष्पादन को रोकने के लिए उपयोग किया जा सकता है. If फ़ंक्शन के समान, इस फ़ंक्शन का तीसरा तर्क उन क्रियाओं को रखने के लिए स्थान प्रदान करता है जिन्हें केवल तभी निष्पादित किया जाना चाहिए जब कोई त्रुटि न हो:

एनीमेशन तालिका T में किसी भी रिकॉर्ड में कोई बदलाव नहीं दिखा रहा है, क्योंकि ifError एक त्रुटि के बाद दूसरे ऑपरेशन को पूरा होने से रोक रहा है

यदि ForAll की पुनरावृत्तियों में से किसी एक के दौरान कोई त्रुटि आती है, तो शेष पुनरावृत्तियाँ नहीं रुकेंगी. ForAll प्रत्येक पुनरावृत्ति को स्वतंत्र रूप से निष्पादित करने के लिए डिज़ाइन किया गया है, जिससे समानांतर निष्पादन की अनुमति मिलती है. जब ForAll पूरा हो जाता है, तो एक त्रुटि वापस आ जाएगी, जिसमें सामने आई सभी त्रुटियां शामिल हैं (IfError या App.OnErrorAllErrors की जांच करके).

उदाहरण के लिए, निम्न सूत्र के परिणामस्वरूप ForAll में दो त्रुटियां वापस आ जाएंगी (दो बार, Value 0 के लिए शून्य से विभाजन के लिए) और Collection के पास तीन रिकॉर्ड होंगे (जब Value 0 नहीं है): [1, 2, 3].

Clear( Collection ); 
ForAll( [1,0,2,0,3], If( 1/Value > 0, Collect( Collection, Value ) ) );

एकाधिक त्रुटियों के साथ कार्य करना

चूँकि एक व्यवहार सूत्र एक से अधिक क्रियाओं को निष्पादित कर सकता है, यह एक से अधिक त्रुटि का भी सामना कर सकता है.

डिफ़ॉल्ट रूप से, पहली त्रुटि अंतिम उपयोगकर्ता को रिपोर्ट की जाती है. इस उदाहरण में, दोनों पैच कॉल विफल हो जाएंगी, दूसरी वाली शून्य त्रुटि से विभाजन के साथ. उपयोगकर्ता को केवल पहली त्रुटि (इंडेक्स के बारे में) दिखाई जाती है:

पहली अनुक्रमणिका त्रुटि त्रुटि बैनर में प्रदर्शित होती है, दूसरी त्रुटि रिपोर्ट नहीं की जाती है

IfError फ़ंक्शन और App.OnErrorAllErrors कार्यक्षेत्र वेरिएबल के साथ आने वाली सभी त्रुटियों तक पहुँच सकते हैं. इस मामले में, हम इसे एक ग्लोबल वेरिएबल पर सेट कर सकते हैं और सामने आई दोनों त्रुटियों को देख सकते हैं. वे तालिका में उसी ऑर्डर में प्रकट होते हैं जिसमें उनका सामना हुआ था:

वैश्विक वैरिएबल PatchErrors में त्रुटियों को कैप्चर करें जहां हम देख सकते हैं कि दोनों त्रुटियां मौजूद हैं

गैर-व्यवहार फ़ार्मुलों में भी एकाधिक त्रुटियाँ वापस की जा सकती हैं. उदाहरण के लिए, अद्यतन करने के लिए रिकॉर्ड के एक बैच के साथ पैच फ़ंक्शन का उपयोग करने से कई त्रुटियाँ वापस आ सकती हैं, प्रत्येक विफल रिकॉर्ड के लिए एक.

तालिकाओं में त्रुटियाँ

जैसा कि हमने पहले देखा, त्रुटियों को वेरिएबल्स में संग्रहीत किया जा सकता है. त्रुटियों को डेटा संरचनाओं में भी शामिल किया जा सकता है, जैसे तालिकाएँ. यह महत्वपूर्ण इसलिए है ताकि किसी एक रिकॉर्ड पर कोई त्रुटि पूरी तालिका को अमान्य न कर सके.

उदाहरण के लिए, Power Apps में इस डेटा तालिका नियंत्रण पर विचार करें:

डेटा तालिका 0 के इनपुट के लिए पारस्परिक क्षेत्र के लिए एक त्रुटि दिखा रही है, जिसके परिणामस्वरूप शून्य त्रुटि से विभाजन होता है

AddColumns की परिकलन में किसी एक मान के लिए शून्य त्रुटि से विभाजन किया गया है. उस एक रिकॉर्ड के लिए, पारस्परिक कॉलम में एक त्रुटि मान है (शून्य से विभाजन) लेकिन अन्य रिकॉर्ड नहीं हैं और ठीक हैं. IsError( Index( output, 2 ) ) गलत देता है और IsError( Index( output, 2 ).Value ) सही देता है.

यदि किसी तालिका को फ़िल्टर करते समय कोई त्रुटि उत्पन्न होती है, तो संपूर्ण रिकॉर्ड एक त्रुटि है लेकिन फिर भी परिणाम आ जाता है ताकि अंतिम उपयोगकर्ता को पता चले कि कुछ था और कोई समस्या है.

यह उदाहरण लीजिए. यहाँ, मूल तालिका में कोई त्रुटि नहीं है, लेकिन जब भी मान 0 के बराबर होता है, तो फ़िल्टरिंग का कार्य एक त्रुटि उत्पन्न करता है.

डेटा तालिका दो रिकॉर्ड के लिए त्रुटियां दिखा रही है जिन्हें फ़िल्टर मानदंड द्वारा संसाधित नहीं किया जा सका

मान -5 और -3 ठीक से फ़िल्टर किए गए हैं. मान 0 के परिणामस्वरूप फ़िल्टर को संसाधित करने में त्रुटि होती है, और इसलिए यह स्पष्ट नहीं है कि रिकॉर्ड को परिणाम में शामिल किया जाना चाहिए या नहीं. अंतिम उपयोगकर्ताओं के लिए अधिकतम पारदर्शिता और निर्माताओं को डीबग करने में मदद करने के लिए, हम मूल के स्थान पर एक त्रुटि रिकॉर्ड शामिल करते हैं. इस मामले में, IsError( Index( output, 2 ) ) सही देता है.

डेटा स्रोत त्रुटियाँ

डेटा स्रोत में डेटा संशोधित करने वाले फ़ंक्शन, जैसे कि Patch, Collect, Remove, RemoveIf, Update, UpdateIf, and SubmitForm दो तरीकों में त्रुटियों की रिपोर्ट करते हैं:

  • इनमें से प्रत्येक फ़ंक्शन ऑपरेशन के परिणाम के रूप में एक त्रुटि मान लौटाएगा. IsError के साथ त्रुटियों का पता लगाया जा सकता है और हमेशा की तरह IfError और App.OnError से प्रतिस्थापित किया या छुपाया जा सकता है.
  • कार्रवाई के बाद, Errors फ़ंक्शन भी पिछले कार्यों की त्रुटियाँ लौटाएगा. यह स्थिति वेरिएबल में त्रुटि को कैप्चर करने की आवश्यकता के बिना प्रपत्र स्क्रीन पर त्रुटि संदेश प्रदर्शित करने के लिए उपयोगी हो सकता है.

उदाहरण के लिए, यह सूत्र Collect से किसी त्रुटि की जाँच करेगा और एक कस्टम त्रुटि संदेश प्रदर्शित करेगा:

IfError( Collect( Names, { Name: "duplicate" } ),
         Notify( $"OOPS: { FirstError.Message }", NotificationType.Warning ) )

त्रुटियाँ फ़ंक्शन रनटाइम संचालन के दौरान पिछली त्रुटियों के बारे में जानकारी भी लौटाता है. स्थिति वेरिएबल में त्रुटि को कैप्चर करने की आवश्यकता के बिना फॉर्म स्क्रीन पर त्रुटि प्रदर्शित करने के लिए यह उपयोगी हो सकता है.

त्रुटियों को पुन: देना

कभी-कभी कुछ संभावित त्रुटियाँ अपेक्षित होती हैं और उन्हें सुरक्षित रूप से अनदेखा किया जा सकता है. IfError और App.OnError के अंदर, अगर कोई त्रुटि पाई जाती है जिसे अगले उच्च हैंडलर को पास किया जाना चाहिए, तो इसे Error( AllErrors ) के साथ वापस लाया जा सकता है.

अपनी खुद की त्रुटियाँ बनाना

आप त्रुटि फ़ंक्शन के साथ अपनी त्रुटियां भी बना सकते हैं.

यदि आप अपनी स्वयं की त्रुटियाँ बना रहे हैं, तो यह अनुशंसा की जाती है कि आप भावी सिस्टम त्रुटि मानों के साथ संभावित विरोधों से बचने के लिए 1000 से ऊपर के मानों का उपयोग करें.

ErrorKind एनम मान

ErrorKind एनम मान विवरण
AnalysisError 18 सिस्टम त्रुटि. कंपाइलर विश्लेषण में कोई समस्या थी.
BadLanguageCode 14 अमान्य या अपरिचित भाषा कोड का उपयोग किया गया था.
BadRegex 15 नियमित व्यंजक अमान्य है. IsMatch, Match, या MatchAll फ़ंक्शंस के साथ उपयोग किए गए सिंटैक्स की जांच करें.
विवाद 6 अद्यतन किए जा रहे रिकॉर्ड को पहले ही स्रोत पर बदल दिया गया है और विवाद को हल करने की आवश्यकता है. किसी भी स्थानीय परिवर्तन को सहेजना, रिकॉर्ड को ताज़ा करना और परिवर्तनों को फिर से लागू करना एक सामान्य समाधान है.
ConstraintViolated 8 रिकॉर्ड सर्वर पर सीमा जाँच में सफल नहीं हुआ.
CreatePermission 3 उपयोगकर्ता के पास डेटा स्रोत के लिए रिकॉर्ड बनाने की अनुमति नहीं है. उदाहरण के लिए, कलेक्ट फ़ंक्शन कॉल किया गया था.
DeletePermissions 5 उपयोगकर्ता के पास डेटा स्रोत के लिए रिकॉर्ड हटाने की अनुमति नहीं है. उदाहरण के लिए, हटाएँ फ़ंक्शन कॉल किया गया था.
Div0 13 शून्य से विभाजित है.
EditPermissions 4 उपयोगकर्ता के पास डेटा स्रोत के लिए रिकॉर्ड बनाने की अनुमति नहीं है. उदाहरण के लिए, पैच फ़ंक्शन कॉल किया गया था.
GeneratedValue 9 सर्वर द्वारा स्वचालित रूप से गणना की जाने वाली फ़ील्ड के लिए सर्वर को गलती से एक मान दिया गया था.
InvalidFunctionUsage 16 किसी फ़ंक्शन का अमान्य उपयोग. फ़ंक्शन के लिए अक्सर एक या अधिक तर्क गलत होते हैं या अमान्य तरीके से उपयोग किए जाते हैं.
FileNotFound 17 SaveData संग्रहण नहीं मिल सका.
InsufficientMemory 21 ऑपरेशन के लिए डिवाइस पर पर्याप्त मेमोरी या स्टोरेज नहीं है.
InvalidArgument 25 अमान्य तर्क फ़ंक्‍शन में पारित किया गया था.
आंतरिक 26 सिस्टम त्रुटि. कार्यों में से एक के साथ एक आंतरिक समस्या थी.
MissingRequired 2 रिकॉर्ड की आवश्यक फ़ील्ड गुम थी.
नेटवर्क 23 नेटवर्क संचार में कोई समस्या थी.
कोई नहीं 12 सिस्टम त्रुटि. कोई त्रुटि नहीं है.
NotApplicable 27 कोई मान उपलब्ध नहीं है. एक रिक्त मान को अलग करने के लिए उपयोगी जिसे संख्यात्मक परिकलनों में शून्य के रूप में माना जा सकता है, उन खाली मानों से जिन्हें मान का उपयोग करने पर संभावित समस्या के रूप में फ़्लैग किया जाना चाहिए.
NotFound 7 रिकॉर्ड ढूँढा नहीं जा सका. उदाहरण के लिए, पैच फ़ंक्शन में संशोधित किया जाने वाला रिकॉर्ड.
NotSupported 20 कार्रवाई इस प्लेयर या डिवाइस द्वारा समर्थित नहीं है.
सांख्यिक 24 एक संख्यात्मक फ़ंक्शन का उपयोग अनुचित तरीके से किया गया था. उदाहरण के लिए, Sqrt को -1 के साथ.
QuoteExceeded 22 संग्रहण कोटा पार हो गया.
ReadOnlyValue 10 कॉलम केवल पढ़ने के लिए है और इसे संशोधित नहीं किया जा सकता है.
ReadPermission 19 उपयोगकर्ता के पास डेटा स्रोत के लिए रिकॉर्ड पढ़ने की अनुमति नहीं है.
सिंक करें 1 डेटा स्रोत द्वारा एक त्रुटि रिपोर्ट की गई थी. अधिक जानकारी के लिए संदेश स्तंभ देखें.
अज्ञात 12" एक त्रुटि थी, लेकिन एक अज्ञात प्रकार की थी.
सत्यापन 11 रिकॉर्ड प्रमाणीकरण जांच में सफल नहीं हुआ.