yaws - Strange Error occurance in Erlang rfc4627 -


  {ठीक है, RequestData, _} = rfc4627: डीकोड (Arg # arg.clidata)  < / पूर्व> 

जब यह <पूर्व> आरएफसी 4627: डीकोड (Arg # arg.clidata) के आउटपुट से मेल खाता है

to

  {ok, RequestData, _}   

यह एक {badmatch, ....} त्रुटि देता है

लेकिन मैंने त्रुटि संदेश में आउटपुट को कॉपी किया और किसी भी त्रुटि के बिना <पूर्व> {ठीक है, अनुरोधडेटा, _}

से मिलान किया जाता है।

यह त्रुटि केवल बेतरतीब ढंग से होती है मैं एक कारण समझ नहीं सकता कभी-कभी यह मैच और कोड बिना किसी त्रुटि के काम करता है और कभी-कभी यह त्रुटि और याज़ कोड क्रैश देता है।

यह त्रुटि संदेश है

  & lt; h2 & gt; आंतरिक त्रुटि, याओ कोड क्रैश हुआ & lt; / h2 & gt; & lt; br / & gt; & lt; घंटा / & gt; & LT; पूर्व & gt; त्रुटि erlang कोड एक uncaught अपवाद फेंक दिया: फ़ाइल: /usr/local/var/yaws/www/prime/yaws/session.yaws:1 कक्षा: त्रुटि अपवाद: {badmatch, {ok, {obj, [{"कार्रवाई", & Lt; & lt; "GET_SESSION_INFO" & gt; & gt;}}, []}} अनुरोध: {http_request, 'POST', {abs_path, "/ प्राइम / yaws / session.yaws"}, {1,1}} स्टैक : {{सत्र, संभाल, 2, [{फ़ाइल, "/ रूट /। Yaws / yaws / default / session.erl"}, {पंक्ति, 30}]}, {yaws_server, deliver_dyn_part, 8, [{फ़ाइल, Yaws_server.erl "}, {पंक्ति, 2801}]}, {yaws_server, aloop, 4, [{फ़ाइल," yaws_server.erl "}, {पंक्ति, 1215}]}, {yaws_server, acceptor2,2, [{फ़ाइल , "yaws_server.erl"}, {पंक्ति, 1052}]}, {proc_lib, init_p_do_apply, 3, [{फ़ाइल, "proc_lib.erl"}, {पंक्ति, 23 9}]}] & lt; / pre & gt; & lt; hr / & gt;    

त्रुटि संदेश से यह स्पष्ट है कि rfc4627 से निकला मूल्य: डीकोड / 1 को तीन-ट्यूपल के साथ आसानी से मेल खाना चाहिए इसलिए यह समस्या नहीं है

आपका मुद्दा फंक्शन कॉल में कुछ "अन्य" वेरिएबल के साथ मेल खाने वाले पैटर्न के साथ हो सकता है। खासकर यदि आपके पास RequestData परिभाषित किया गया है, तो आपके कोड के मुकाबले आप केवल पिछले मान की तुलना कर सकते हैं rfc4627: decode / 1 से लौट आएंगे।

यह भी उल्लेखनीय है कि जबकि _ कुछ भी करने के लिए पैटर्न-मैच होगा (या यदि आप करेंगे तो पैटर्न का मिलान नहीं होगा), अंडरस्कोर से शुरू होने वाले चर (जैसे _Reminder ) होगा पैटर्न मैच (यदि वे अप्रयुक्त हैं तो वे आपको चेतावनियां नहीं देंगे)।

संपादित करें

अगर आप < एरलांग में कोड> = ऑपरेटर इसका दो अलग-अलग चीजों का अर्थ हो सकता है या तो यह असाइनमेंट या पैटर्न मैच हो सकता है, या आपके मामले में दोनों (आप जो करने की कोशिश कर रहे हैं वह ok परमाणु पर मैच मैच है, और एक ही समय में RequestData )। इसलिए, ReqestData के आधार पर बाध्य है या नहीं (पहले से ही कुछ मान है, या नहीं) आपके पास अलग व्यवहार होगा {ok, RequestData, _} = rfc4627: डिकोड (Arg #)

मैं मान रहा हूँ ReqestData arg.clidata) । उस स्थिति में, हम केवल डिकोड द्वारा दिए गए पैटर्न मैच (तुलना) मान और ReqestData को असाइन करते हैं, जो या तो पास या असफल हो सकते हैं उदाहरण के लिए यह null या झूठी के लिए बाध्य हो सकता है, जो कि decode द्वारा लौटाए जा सकने वाले मान हैं और चूंकि यह सब आपके डेटा के आधार पर निर्भर करता है, जो आप अपने सिस्टम से बाहर हो रहे हैं, यह कुछ समय से गुजरने / कुछ समय के असफल व्यवहार को समझा सकता है।

Comments

Popular posts from this blog

asp.net - Procedure or function "Procedure name" expects a parameter "Param name" which was not supplied occurs rarely -

c# - The item with identity 'Id' already exists in the metadata collection. Parameter name: item -

c++ - Redefined variable in the other module -