नोट
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप साइन इन करने या निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
| कार्यों | इस पर लागू होता है |
|---|---|
| Error IfError IsError |
|
| IsBlankOrError |
|
त्रुटियों का पता लगाता है और एक वैकल्पिक मान प्रदान करता है या कार्रवाई करता है. एक कस्टम त्रुटि बनाएँ या त्रुटि से पास करें.
नोट
यदि किसी ऐप ने सेटिंग्स अपडेट्स रिटायर्ड> के अंतर्गत >फ़ॉर्मूला-स्तरीय त्रुटि प्रबंधनसुविधा को अक्षम कर दिया है, तो वे फ़ंक्शन सही ढंग से काम नहीं करेंगे।
IfError
फ़ंक्शन मानों का IfError परीक्षण करता है जब तक कि यह एक त्रुटि नहीं ढूंढता है। यदि फ़ंक्शन को कोई त्रुटि मिलती है, तो फ़ंक्शन मूल्यांकन करता है और एक संबंधित प्रतिस्थापन मान दिखाता है और आगे के मूल्यांकन को रोक देता है. कोई त्रुटि नहीं मिलने पर एक डिफ़ॉल्ट मान भी दिखाया जा सकता है. की संरचना IfError के जैसा है कि यदि समारोह IfError के समान: त्रुटियों के लिए परीक्षण, जबकि यदि सहीके लिए परीक्षण.
किसी त्रुटि को एक मान्य मान से बदलने के लिए उपयोग करें IfError ताकि डाउनस्ट्रीम गणना जारी रह सके. उदाहरण के लिए, यदि उपयोगकर्ता के इनपुट का परिणाम शून्य से विभाजन हो सकता है, तो इस फ़ंक्शन का उपयोग करें:
IfError( 1/x, 0 )
यदि 0 का मान शून्य है, तो यह सूत्र x लौटाता है, क्योंकि 1/x त्रुटि उत्पन्न करता है। यदि x शून्य नहीं है, तो 1/x दिखाया जाता है.
आगे का संसाधन रोकना
व्यवहार सूत्रों में सूत्रों की एक-साथ चेनिंग करने पर, जैसे कि:
Patch( DS1, ... );
Patch( DS2, ... )
भले ही के लिए Patch विफल हो जाए, फिर भी DS2 के लिए दूसरे फ़ंक्शन का प्रयास किया जाएगा. त्रुटि का दायरा चेन हुए प्रत्येक सूत्र तक सीमित होता है.
किसी क्रिया को करने के लिए उपयोग करें IfError और केवल तभी प्रक्रिया जारी रखें जब कार्रवाई सफल हो। इस उदाहरण पर लागू करना IfError :
IfError(
Patch( DS1, ... ), Notify( "problem in the first action" ),
Patch( DS2, ... ), Notify( "problem in the second action" )
)
यदि के DS1 में कोई समस्या है, तो पहला Notify निष्पादित किया जाता है.
के दूसरे DS2 सहित आगे कोई संसाधन कार्रवाई नहीं होती है. यदि पहला 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 जा सकने वाले सभी मानों के प्रकार संगत होने चाहिए।
अंतिम उदाहरण में, पैच एक रिकॉर्ड लौटाता है जो प्रतिस्थापन सूत्रों या डिफ़ॉल्ट परिणाम के लिए उपयोग किए गए बूलियन के साथ संगत नहीं है। जो ठीक है, क्योंकि ऐसी कोई स्थिति नहीं है जिसमें इन पैच कॉल से वापसी मूल्य वापस कर 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!" )
जैसा कि ऊपर देखा गया है, IfError यदि रिप्लेसमेंट या डिफ़ॉर्मल्ट एक त्रुटि है तो एक त्रुटि वापस कर सकता है।
FirstError/AllErrors
प्रतिस्थापन सूत्रों में, पाई गई किसी भी त्रुटि के बारे में जानकारी FirstError रिकॉर्ड और AllErrors तालिका में उपलब्ध है. AllErrors त्रुटि सूचना रिकॉर्ड की एक तालिका है, जिसमें FirstError इस तालिका के पहले रिकॉर्ड का शॉर्टकट है। FirstError हमेशा वही मान लौटाता है जो First( AllErrors ) लौटाता है.
Error रिकॉर्ड में शामिल हैं:
| क्षेत्र | 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 .
वापसी मान एक बूलियन है सही या गलत.
उपयोग त्रुटि IsError के किसी भी आगे के प्रसंस्करण को रोकता है।
IsBlankOrError
IsBlankOrError फ़ंक्शन या तो एक रिक्त मान या एक त्रुटि मान के लिए परीक्षण करता है और इसके बराबर Or( IsBlank( X ), IsError( X ) )है।
मौजूदा ऐप्स के लिए त्रुटि प्रबंधन सक्षम करते समय, मौजूदा ऐप व्यवहार को संरक्षित करने के लिए IsBlank को IsBlankOrError बदलने पर विचार करें। त्रुटि प्रबंधन को जोड़ने से पहले, डेटाबेस से शून्य मानों और त्रुटि मानों दोनों को दर्शाने के लिए a रिक्त मान का उपयोग किया जाता था। Error हैंडलिंग ब्लैंक की इन दो व्याख्याओं को अलग करता है जो मौजूदा ऐप्स के व्यवहार को बदल सकता है जो IsBlank का उपयोग करना जारी रखते हैं।
वापसी मान एक बूलियन है सही या गलत.
उपयोग त्रुटि IsBlankOrError के किसी भी आगे के प्रसंस्करण को रोकता है।
कस्टम त्रुटि बनाने और रिपोर्ट करने के लिए फ़ंक्शन का Error उपयोग करें. उदाहरण के लिए, आपके पास यह निर्धारित करने के लिए तर्क हो सकता है कि कोई दिया गया मान आपके संदर्भ के लिए मान्य है या नहीं—किसी समस्या के लिए स्वचालित रूप से कुछ चेक नहीं किया गया है। आप फ़ंक्शन के लिए ऊपर IfError वर्णित एक ही रिकॉर्ड का उपयोग करके अपनी स्वयं की त्रुटि बना सकते हैं और वापस कर सकते हैं।
के संदर्भ IfErrorमें, किसी त्रुटि को फिर से फेंकने या पास करने के लिए फ़ंक्शन का उपयोग करें Error । उदाहरण के लिए, आपका तर्क IfError यह तय कर सकता है कि कुछ मामलों में किसी त्रुटि को सुरक्षित रूप से अनदेखा किया जा सकता है, लेकिन अन्य मामलों में त्रुटि को भेजना महत्वपूर्ण है. भीतर या IfErrorApp.OnError, किसी त्रुटि से गुजरने के लिए (FirstError) का उपयोग करेंError।
फ़ंक्शन को Error त्रुटियों की एक तालिका भी पारित किया जा सकता है, जैसा कि AllErrors तालिका में पाया जाएगा। सभी त्रुटियों को फिर से फेंकने के लिए (AllErrors) का उपयोग करेंError और न केवल पहले।
एक रिक्त रिकॉर्ड या खाली तालिका बिना किसी त्रुटि के परिणाम के लिए पारित Error की गई।
सिंटैक्स
Error( ErrorRecord )
Error( त्रुटि सारणी )
- ErrorRecord – आवश्यक. Error जानकारी रिकॉर्ड, जिसमें प्रकार, संदेश और अन्य फ़ील्ड शामिल हैं. प्रकार आवश्यक है. FirstError को सीधे पास किया जा सकता है.
- ErrorTable – आवश्यक. त्रुटि सूचना रिकॉर्ड की तालिका. AllErrors को सीधे पास किया जा सकता है।
IfError(मान 1, प्रतिस्थापन1 [, मान 2,प्रतिस्थापन 2, ... [, डिफ़ॉल्टपरिणाम] ] )
- मान – आवश्यक. त्रुटि मान की जाँच करने का सूत्र.
- प्रतिस्थापन – आवश्यक. यदि मैचिंग मान तर्क कोई त्रुटि देते हैं, तो मूल्यांकन किए जाने वाले सूत्र और लौटाए जाने वाले मान.
- डिफ़ॉल्ट परिणाम – वैकल्पिक. यदि सूत्र में कोई त्रुटि नहीं मिलती है, तो मूल्यांकन किए जाने वाले सूत्र.
IsError( मूल्य )
IsBlankOrError( मूल्य )
- मान – आवश्यक. जांच के लिए फॉर्मूला.
उदाहरण
सरल IfError
| सूत्र | विवरण | परिणाम |
|---|---|---|
| IfError( 1, 2 ) | पहला तर्क कोई त्रुटि नहीं है. फ़ंक्शन में जाँचने के लिए कोई अन्य त्रुटि नहीं है और कोई डिफ़ॉल्ट वापसी मान नहीं है. फ़ंक्शन अंतिम मान तर्क को मूल्यांकित के रूप में दिखाता है. | 1 |
| IfError( 1/0, 2 ) | पहला तर्क एक त्रुटि मान देता है (शून्य से विभाजन के कारण). फ़ंक्शन दूसरे तर्क का मूल्यांकन करता है और परिणाम के रूप में उसे दिखाता है. | 2 |
| IfError( 10, 20, 30 ) | पहला तर्क कोई त्रुटि नहीं है. फ़ंक्शन में जाँचने के लिए कोई अन्य त्रुटि नहीं है, लेकिन उसमें एक डिफ़ॉल्ट वापसी मान है. फ़ंक्शन DefaultResult तर्क दिखाता है. | 30 |
| IfError( 10, 11, 20, 21, 300 ) | पहला तर्क 10 कोई त्रुटि नहीं है, इसलिए फ़ंक्शन उस तर्क के संगत प्रतिस्थापन 11 का मूल्यांकन नहीं करता है. तीसरा तर्क 20 भी कोई त्रुटि नहीं है, इसलिए फ़ंक्शन उस तर्क के संगत प्रतिस्थापन 21 का मूल्यांकन नहीं करता है. पाँचवें तर्क 300 में कोई संगत प्रतिस्थापन नहीं है और डिफ़ॉल्ट परिणाम है. फ़ंक्शन वह परिणाम देता है, क्योंकि सूत्र में कोई त्रुटि नहीं है. | 300 |
| IfError(1/0, सूचित करें ("एक आंतरिक समस्या थी") ) | पहला तर्क एक त्रुटि मान देता है (शून्य से विभाजन के कारण). फ़ंक्शन दूसरे तर्क का मूल्यांकन करता है और उपयोगकर्ता को एक संदेश दिखाता है. का रिटर्न मान IfErrorNotify का रिटर्न वैल्यू है, जिसे पहले तर्क (एक नंबर) के समान IfError प्रकार के लिए मजबूर किया जाता है। | 1 |
सरल IsError
| सूत्र | विवरण | परिणाम |
|---|---|---|
| IsError( 1 ) | तर्क कोई त्रुटि नहीं है. | असत्य |
| IsError( रिक्त () ) | तर्क रिक्त है, लेकिन त्रुटि नहीं है. | असत्य |
| IsError( 1/0 ) | तर्क एक त्रुटि है. | सत्य |
| If( IsError( ( 1/0 ), सूचित करें ( "एक आंतरिक समस्या थी") ) | त्रुटि मान लौटाने का तर्क IsError (शून्य से विभाजन के कारण)। यह फ़ंक्शन सच लौटाता है, जिसके कारण If उपयोगकर्ता को Notify फ़ंक्शन के साथ एक संदेश प्रदर्शित करता है. If का वापसी मान Notify का वापसी मान होता है और उसी प्रकार में बाध्य होता है, जिसमें If का पहला तर्क होता है (बूलियन). | सत्य |
सरल IsBlankOrError
| सूत्र | विवरण | परिणाम |
|---|---|---|
| IsBlankOrError( 1 ) | तर्क त्रुटि या रिक्त नहीं है. | असत्य |
| IsBlankOrError( रिक्त () ) | तर्क रिक्त है. | सत्य |
| IsBlankOrError( 1/0 ) | तर्क एक त्रुटि है. | सत्य |
सरल Error
इस उदाहरण में, तिथियाँ एक दूसरे के सापेक्ष मान्य हैं, जिसके परिणामस्वरूप कोई समस्या होने पर त्रुटि होती है.
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 उपयोग किया जाता है, अपेक्षित त्रुटियों को हटाया जा सकता है और शेष त्रुटियों को बनाए रखा जा सकता है और रिपोर्ट किया जा सकता है। उदाहरण के लिए, यदि हम जानते हैं कि किसी विशेष संदर्भ में शून्य से भाग देने से कोई समस्या नहीं होगी, तो उन त्रुटियों को फ़िल्टर किया जा सकता है, तथा निम्नलिखित सूत्र के साथ अन्य सभी त्रुटियों को बरकरार रखा जा सकता है:
Error( Filter( AllErrors, Kind <> ErrorKind.Div0 ) )
चरण दर चरण
एक पाठ इनपुट नियंत्रण जोड़ें और यदि डिफ़ॉल्ट रूप से उसका नाम TextInput1 नहीं है, तो उसे यह नाम दें.
एक लेबल नियंत्रण जोड़ें और यदि डिफ़ॉल्ट रूप से उसका नाम Label1 नहीं है, तो उसे यह नाम दें.
Label1 के पाठ के लिए गुण को इस पर सेट करें:
IfError( Value( TextInput1.Text ), -1 )TextInput1 में, 1234 दर्ज करें.
लेबल1 मान 1234 दिखाता है क्योंकि यह मान फ़ंक्शन के लिए एक वैध इनपुट है।
TextInput1 में, ToInfinity दर्ज करें.
लेबल1 मान -1 दिखाता है क्योंकि यह Value फ़ंक्शन के लिए मान्य इनपुट नहीं है। मान फ़ंक्शन IfErrorको लपेटे बिना, लेबल कोई मान नहीं दिखाएगा क्योंकि त्रुटि मान को रिक्त स्थान के रूप में माना जाता है।