नोट
इस पेज तक पहुँच के लिए प्रमाणन की आवश्यकता होती है. आप साइन इन करने या निर्देशिकाओं को बदलने का प्रयास कर सकते हैं.
इस पेज तक पहुँच के लिए प्रमाणन की आवश्यकता होती है. आप निर्देशिकाओं को बदलने का प्रयास कर सकते हैं.
इस पर लागू होता है: कैनवास ऐप्स
Dataverse सूत्र स्तंभ
डेस्कटॉप प्रवाह
मॉडल-संचालित ऐप्स
Power Pages
Power Platform CLI
त्रुटियों का पता लगाता है और एक वैकल्पिक मान प्रदान करता है या कार्रवाई करता है. एक कस्टम त्रुटि बनाएँ या त्रुटि से पास करें.
नोट
यदि किसी ऐप ने सेटिंग्स अपडेट्स रिटायर्ड> के अंतर्गत >फ़ॉर्मूला-स्तरीय त्रुटि प्रबंधनसुविधा को अक्षम कर दिया है, तो वे फ़ंक्शन सही ढंग से काम नहीं करेंगे।
यदि त्रुटि
IfError फ़ंक्शन तब तक मानों का परीक्षण करता है, जब तक कि उसे कोई त्रुटि न मिल जाए. यदि फ़ंक्शन को कोई त्रुटि मिलती है, तो फ़ंक्शन मूल्यांकन करता है और एक संबंधित प्रतिस्थापन मान दिखाता है और आगे के मूल्यांकन को रोक देता है. कोई त्रुटि नहीं मिलने पर एक डिफ़ॉल्ट मान भी दिखाया जा सकता है. IfError की संरचना, If फ़ंक्शन से मिलती-जुलती होती है: IfError त्रुटियों की जाँच करता है, जबकि If सही की जाँच करता है.
IfError का उपयोग त्रुटि को एक मान्य मान से बदलने के लिए करें, ताकि डाउनस्ट्रीम गणना जारी रह सकें. उदाहरण के लिए, यदि उपयोगकर्ता के इनपुट का परिणाम शून्य से विभाजन हो सकता है, तो इस फ़ंक्शन का उपयोग करें:
IfError( 1/x, 0 )
यदि 0
का मान शून्य है, तो यह सूत्र x
लौटाता है, क्योंकि 1/x
त्रुटि उत्पन्न करता है। यदि x
शून्य नहीं है, तो 1/x
दिखाया जाता है.
आगे का संसाधन रोकना
व्यवहार सूत्रों में सूत्रों की एक-साथ चेनिंग करने पर, जैसे कि:
Patch( DS1, ... );
Patch( DS2, ... )
भले ही DS1
के लिए Patch विफल हो जाए, फिर भी DS2
के लिए दूसरे Patch फ़ंक्शन का प्रयास किया जाएगा. त्रुटि का दायरा चेन हुए प्रत्येक सूत्र तक सीमित होता है.
कार्रवाई करने के लिए IfError का उपयोग करें और संसाधन केवल तब ही जारी रखें, जब कार्रवाई सफल हुई हो. इस उदाहरण पर IfError लागू करना:
IfError(
Patch( DS1, ... ), Notify( "problem in the first action" ),
Patch( DS2, ... ), Notify( "problem in the second action" )
)
यदि DS1
के Patch में कोई समस्या है, तो पहला Notify निष्पादित किया जाता है. DS2
के दूसरे Patch सहित आगे कोई संसाधन कार्रवाई नहीं होती है. यदि पहला Patch सफल होता है, तो दूसरा Patch निष्पादित किया जाएगा.
यदि कोई त्रुटि नहीं पाई जाती है, तो प्रदान किए जाने पर, वैकल्पिक DefaultResult तर्क दिखाया जाता है. इस तर्क के बिना, अंतिम मान तर्क दिखाया जाता है.
अंतिम उदाहरण के अनुसार, IfError से वापसी मान को यह पता लगाने के लिए जाँचा जा सकता है कि कोई समस्या थी या नहीं:
IfError(
Patch( DS1, ... ), Notify( "problem in the first action" ); false,
Patch( DS2, ... ), Notify( "problem in the second action" ); false,
true
)
प्रकार संगतता
IfError अपने किसी एक तर्क का मान लौटाता है। IfError द्वारा दिखाए गए सभी मानों के प्रकार संगत होने चाहिए.
अंतिम उदाहरण में, पैच एक रिकॉर्ड लौटाता है जो प्रतिस्थापन सूत्रों या डिफ़ॉल्ट परिणाम के लिए उपयोग किए गए बूलियन के साथ संगत नहीं है। जो ठीक है, क्योंकि ऐसी कोई स्थिति नहीं है, जिसमें इन Patch कॉल का वापसी मान IfError द्वारा लौटाया जाएगा.
नोट
व्यवहार में बदलाव की प्रक्रिया के दौरान, IfError के सभी तर्कों के प्रकार वर्तमान में संगत होने चाहिए.
पहले वर्णित सामान्य उदाहरण में:
IfError( 1/x, 0 )
1/x
और 0
के प्रकार सुसंगत थे क्योंकि दोनों ही संख्याएं थीं. यदि वे नहीं हैं, तो दूसरे तर्क को पहले तर्क के प्रकार से मेल खाने के लिए बाध्य किया जाता है।
जब शून्य से भाग दिया जाता है तो Excel #DIV/0! प्रदर्शित करता है।
इसके बजाय, निम्न के साथ IfError पर विचार करें:
IfError( 1/x, "#DIV/0!" )
ऊपर दिया गया सूत्र काम नहीं करेगा. पाठ स्ट्रिंग "#DIV/0!"
को प्रथम तर्क के प्रकार IfError पर बाध्य किया जाता है, जो एक संख्या है। IfError का परिणाम एक और त्रुटि है क्योंकि पाठ स्ट्रिंग को बाध्य नहीं किया जा सकता है। इसके समाधान के लिए, पहले तर्क को पाठ स्ट्रिंग में रूपांतरित करें, ताकि IfError हमेशा एक पाठ स्ट्रिंग दिखाए:
IfError( Text( 1/x ), "#DIV/0!" )
जैसा कि ऊपर देखा गया है, यदि प्रतिस्थापन या DefaultResult एक त्रुटि है, तो IfError एक त्रुटि दिखा सकता है.
FirstError / AllErrors
प्रतिस्थापन सूत्रों में, पाई गई किसी भी त्रुटि के बारे में जानकारी FirstError रिकॉर्ड और AllErrors तालिका में उपलब्ध है. AllErrors त्रुटि सूचना रिकॉर्ड की एक तालिका है, जिसमें FirstError इस तालिका के पहले रिकॉर्ड का शॉर्टकट है। FirstError हमेशा वही मान लौटाता है जो First( AllErrors ) लौटाता है.
त्रुटि रिकॉर्ड में शामिल हैं:
क्षेत्र | Type | विवरण |
---|---|---|
दयालु | ErrorKind एनम (संख्या) | त्रुटि की श्रेणी. |
संदेश | पाठ स्ट्रिंग | त्रुटि के बारे में संदेश, जो अंतिम उपयोगकर्ता को प्रदर्शित करने के लिए उपयुक्त है. |
स्रोत | पाठ स्ट्रिंग | वह स्थान जहाँ त्रुटि उत्पन्न हुई, रिपोर्टिंग के लिए उपयोग किया गया. उदाहरण के लिए, किसी नियंत्रण गुण से बंधे सूत्र के लिए, यह मान ControlName.PropertyName के रूप में होता है. |
देखा | पाठ स्ट्रिंग | वह स्थान जहाँ उपयोगकर्ता को त्रुटि दिखाई देती है, रिपोर्टिंग के लिए उपयोग किया जाता है. उदाहरण के लिए, किसी नियंत्रण गुण से बंधे सूत्र के लिए, यह मान ControlName.PropertyName के रूप में होता है. |
विवरण | रिकॉर्ड | त्रुटि के बारे में विवरण. फिलहाल, विवरण केवल नेटवर्क त्रुटियों के लिए ही उपलब्ध कराया जाता है। इस रिकॉर्ड में HttpStatusCode शामिल है, जिसमें HTTP स्थिति कोड होता है और HttpResponse जिसमें कनेक्टर या सेवा से प्रत्युत्तर का मुख्य भाग होता है। |
उदाहरण के लिए, निम्न सूत्र को एक बटन नियंत्रण का OnSelect गुण मानें:
Set( a, 1/0 )
और दूसरा बटन नियंत्रण की OnSelect संपत्ति पर यह सूत्र:
IfError( a, Notify( "Internal error: originated on " & FirstError.Source & ", surfaced on " & FirstError.Observed ) )
जब दो बटन क्रम से सक्रिय होते हैं तो उपरोक्त उदाहरण सूत्र निम्नलिखित बैनर प्रदर्शित करेगा:
आमतौर पर, केवल एक ही त्रुटि होगी जिसके साथ FirstError पर्याप्त रूप से काम किया जा सकता है। हालाँकि, ऐसे परिदृश्य हैं जहाँ कई त्रुटियाँ वापस आ सकती हैं. उदाहरण के लिए, फ़ॉर्मूला चेनिंग ऑपरेटर या Concurrent फ़ंक्शन का इस्तेमाल करते समय. इन स्थितियों में भी, FirstError की रिपोर्ट करना एक समस्या को प्रकट करने के लिए पर्याप्त हो सकता है, बजाय इसके कि उपयोगकर्ता को कई त्रुटियों के साथ ओवरलोड किया जाए. यदि आपको अभी भी प्रत्येक त्रुटि के साथ व्यक्तिगत रूप से काम करने की आवश्यकता है, तो आप AllErrors तालिका का उपयोग कर सकते हैं.
क्या त्रुटि है
IsError फ़ंक्शन त्रुटि मान की जाँच करता है.
वापसी मान एक बूलियन है सही या गलत.
IsError का प्रयोग त्रुटि के आगे के प्रसंस्करण को रोकता है।
IsBlankOrError
IsBlankOrError फ़ंक्शन किसी रिक्त मान या त्रुटि मान के लिए जांच करता है और Or( IsBlank( X ), IsError( X ) )
के बराबर है.
मौजूदा ऐप्स के लिए त्रुटि प्रबंधन सक्षम करते समय, मौजूदा ऐप व्यवहार को संरक्षित करने के लिए IsBlank को IsBlankOrError से बदलने पर विचार करें. त्रुटि प्रबंधन को जोड़ने से पहले, डेटाबेस से शून्य मानों और त्रुटि मानों दोनों को दर्शाने के लिए a रिक्त मान का उपयोग किया जाता था। त्रुटि प्रबंधन रिक्त की इन दो व्याख्याओं को अलग करता है, जो IsBlank का उपयोग जारी रखने वाले मौजूदा ऐप्स के व्यवहार को बदल सकता है.
वापसी मान एक बूलियन है सही या गलत.
IsBlankOrError का प्रयोग त्रुटि के आगे के प्रसंस्करण को रोकता है।
कस्टम त्रुटि बनाने और रिपोर्ट करने के लिए के लिए त्रुटि फ़ंक्शन का उपयोग करें. उदाहरण के लिए, आपके पास यह निर्धारित करने के लिए तर्क हो सकता है कि कोई दिया गया मान आपके संदर्भ के लिए मान्य है या नहीं—किसी समस्या के लिए स्वचालित रूप से कुछ चेक नहीं किया गया है। आप अपनी स्वयं की त्रुटि बना सकते हैं और वापस कर सकते हैं, तो IfError फ़ंक्शन के लिए ऊपर वर्णित समान रिकॉर्ड का उपयोग करके, Kind और Message के साथ पूर्ण करें.
IfError के संदर्भ में, त्रुटि फ़ंक्शन का उपयोग किसी त्रुटि को फिर से फेंकने या पास करने के लिए करें. उदाहरण के लिए, IfError में आपका तर्क तय कर सकता है कि कुछ मामलों में किसी त्रुटि को सुरक्षित रूप से अनदेखा किया जा सकता है, लेकिन अन्य मामलों में त्रुटि को भेजना महत्वपूर्ण है. IfError या App.OnError के भीतर, त्रुटि से गुजरने के लिए Error( FirstError ) का उपयोग करें.
त्रुटि फ़ंक्शन को त्रुटियों की तालिका भी दी जा सकती है, जैसा कि AllErrors तालिका में पाया जाएगा. केवल पहली ही नहीं बल्कि सभी त्रुटियों को फिर से फेंकने के लिए Error( AllErrors ) का उपयोग करें.
रिक्त रिकॉर्ड या रिक्त तालिका त्रुटि को पास करने पर कोई त्रुटि नहीं होती है.
सिंटैक्स
त्रुटि( त्रुटि रिकॉर्ड )
त्रुटि( त्रुटितालिका )
- ErrorRecord – आवश्यक. त्रुटि सूचना रिकॉर्ड, जिसमें Kind, Message, और अन्य फ़ील्ड शामिल हैं. प्रकार आवश्यक है. FirstError को सीधे पास किया जा सकता है.
- ErrorTable – आवश्यक. त्रुटि सूचना रिकॉर्ड की तालिका. AllErrors को सीधे पास किया जा सकता है।
ifError( Value1, Replacement1 [, Value2 , रिप्लेसमेंट2, ... [, डिफ़ॉल्टपरिणाम ] )
- मान – आवश्यक. त्रुटि मान की जाँच करने का सूत्र.
- प्रतिस्थापन – आवश्यक. यदि मैचिंग मान तर्क कोई त्रुटि देते हैं, तो मूल्यांकन किए जाने वाले सूत्र और लौटाए जाने वाले मान.
- डिफ़ॉल्ट परिणाम – वैकल्पिक. यदि सूत्र में कोई त्रुटि नहीं मिलती है, तो मूल्यांकन किए जाने वाले सूत्र.
IsError( मान )
IsBlankOrError( मान )
- मान – आवश्यक. जांच के लिए फॉर्मूला.
उदाहरण
सामान्य IfError
सूत्र | विवरण | परिणाम |
---|---|---|
यदित्रुटि( 1, 2 ) | पहला तर्क कोई त्रुटि नहीं है. फ़ंक्शन में जाँचने के लिए कोई अन्य त्रुटि नहीं है और कोई डिफ़ॉल्ट वापसी मान नहीं है. फ़ंक्शन अंतिम मान तर्क को मूल्यांकित के रूप में दिखाता है. | 1 |
यदित्रुटि( 1/0, 2 ) | पहला तर्क एक त्रुटि मान देता है (शून्य से विभाजन के कारण). फ़ंक्शन दूसरे तर्क का मूल्यांकन करता है और परिणाम के रूप में उसे दिखाता है. | 2 |
यदित्रुटि( 10, 20, 30 ) | पहला तर्क कोई त्रुटि नहीं है. फ़ंक्शन में जाँचने के लिए कोई अन्य त्रुटि नहीं है, लेकिन उसमें एक डिफ़ॉल्ट वापसी मान है. फ़ंक्शन DefaultResult तर्क दिखाता है. | 30 |
यदित्रुटि( 10, 11, 20, 21, 300 ) | पहला तर्क 10 कोई त्रुटि नहीं है, इसलिए फ़ंक्शन उस तर्क के संगत प्रतिस्थापन 11 का मूल्यांकन नहीं करता है. तीसरा तर्क 20 भी कोई त्रुटि नहीं है, इसलिए फ़ंक्शन उस तर्क के संगत प्रतिस्थापन 21 का मूल्यांकन नहीं करता है. पाँचवें तर्क 300 में कोई संगत प्रतिस्थापन नहीं है और डिफ़ॉल्ट परिणाम है. फ़ंक्शन वह परिणाम देता है, क्योंकि सूत्र में कोई त्रुटि नहीं है. | 300 |
IfError( 1/0, Notify( "कोई आंतरिक समस्या थी") ) | पहला तर्क एक त्रुटि मान देता है (शून्य से विभाजन के कारण). फ़ंक्शन दूसरे तर्क का मूल्यांकन करता है और उपयोगकर्ता को एक संदेश दिखाता है. IfError का वापसी मान Notify का वापसी मान होता है और उसी प्रकार में बाध्य होता है, जिसमें IfError का पहला तर्क होता है (एक संख्या). | 1 |
सामान्य IsError
सूत्र | वर्णन | परिणाम |
---|---|---|
त्रुटि है( 1 ) | तर्क कोई त्रुटि नहीं है. | असत्य |
IsError( रिक्त() ) | तर्क रिक्त है, लेकिन त्रुटि नहीं है. | असत्य |
त्रुटि है( 1/0 ) | तर्क एक त्रुटि है. | सत्य |
यदि( IsError( 1/0 ), सूचित करें( "कोई आंतरिक समस्या थी") ) | IsError का तर्क एक त्रुटि मान देता है (शून्य से विभाजन के कारण). यह फ़ंक्शन सच लौटाता है, जिसके कारण If उपयोगकर्ता को Notify फ़ंक्शन के साथ एक संदेश प्रदर्शित करता है. If का वापसी मान Notify का वापसी मान होता है और उसी प्रकार में बाध्य होता है, जिसमें If का पहला तर्क होता है (बूलियन). | सत्य |
सरल IsBlankOrError
सूत्र | विवरण | परिणाम |
---|---|---|
IsBlankOrError( 1 ) | तर्क त्रुटि या रिक्त नहीं है. | असत्य |
IsBlankOrError( रिक्त() ) | तर्क रिक्त है. | सत्य |
IsBlankOrError( 1/0 ) | तर्क एक त्रुटि है. | सत्य |
सामान्य त्रुटि
इस उदाहरण में, तिथियाँ एक दूसरे के सापेक्ष मान्य हैं, जिसके परिणामस्वरूप कोई समस्या होने पर त्रुटि होती है.
If( StartDate > EndDate,
Error( { Kind: ErrorKind.Validation, Message: "Start Date must be before End Date" } ) )
इस उदाहरण में, कुछ त्रुटियों को गुजरने दिया जाता है जबकि अन्य को दबा दिया जाता है और उनके स्थान पर मान लगा दिया जाता है। पहले मामले में, b त्रुटि स्थिति में है क्योंकि Value फ़ंक्शन में एक अमान्य तर्क है। चूंकि सूत्र लेखक को इसकी उम्मीद नहीं थी, इसलिए इसे उपयोगकर्ता को दिखा दिया जाता है। दूसरे मामले में, समान सूत्र के साथ, b का मान 0 है, जिसके परिणामस्वरूप शून्य से विभाजन होता है। इस मामले में, सूत्र लेखक को पता चल सकता है कि यह इस तर्क के लिए स्वीकार्य है, त्रुटि को दबाएं (कोई बैनर नहीं दिखाया गया है), और बदले में -1 लौटाएँ.
With( {a: 1, b: Value("a")},
IfError( a/b, If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ), -1 ) ) )
// returns an error with Kind = ErrorKind.InvalidArgument
With( {a: 1, b: 0} )
IfError( a/b, If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ), -1 ) ) )
// returns -1
AllErrors तालिका को किसी अन्य तालिका की तरह फ़िल्टर किया जा सकता है. त्रुटि फ़ंक्शन के साथ उपयोग किया जाता है, अपेक्षित त्रुटियां निकाली जा सकती हैं और शेष त्रुटियां बरकरार रखी जाती हैं और रिपोर्ट की जाती हैं. उदाहरण के लिए, यदि हम जानते हैं कि किसी विशेष संदर्भ में शून्य से भाग देने से कोई समस्या नहीं होगी, तो उन त्रुटियों को फ़िल्टर किया जा सकता है, तथा निम्नलिखित सूत्र के साथ अन्य सभी त्रुटियों को बरकरार रखा जा सकता है:
Error( Filter( AllErrors, Kind <> ErrorKind.Div0 ) )
चरण दर चरण
एक पाठ इनपुट नियंत्रण जोड़ें और यदि डिफ़ॉल्ट रूप से उसका नाम TextInput1 नहीं है, तो उसे यह नाम दें.
एक लेबल नियंत्रण जोड़ें और यदि डिफ़ॉल्ट रूप से उसका नाम Label1 नहीं है, तो उसे यह नाम दें.
Label1 के पाठ के लिए गुण को इस पर सेट करें:
IfError( Value( TextInput1.Text ), -1 )
TextInput1 में, 1234 दर्ज करें.
लेबल1 मान 1234 दिखाता है क्योंकि यह मान फ़ंक्शन के लिए एक वैध इनपुट है।
TextInput1 में, ToInfinity दर्ज करें.
लेबल1 मान -1 दिखाता है क्योंकि यह Value फ़ंक्शन के लिए मान्य इनपुट नहीं है। IfError के साथ मान फ़ंक्शन को रैप किए बिना, लेबल कोई मान नहीं दिखाएगा, क्योंकि त्रुटि मान को रिक्त माना जाता है.