मैं फ़ाइल की सामग्री पर eval
कर रहा हूं। फ़ाइल लेबल से बना है जिसे मैं पार्स करता हूं। प्रत्येक पंक्ति में एक लेबल होता है, और मेरे पास प्रत्येक लेबल के लिए proc
परिभाषित किया गया है, ताकि eval
सफल हो। हालांकि, कभी-कभी उपयोगकर्ता नए लेबल जोड़ते हैं और फिर अज्ञात कमांड के कारण eval
कमांड विफल हो जाता है।अज्ञात कमांड पर क्रैशिंग से टीसीएल को रोकें
क्या कोई अज्ञात कमांड eval
पर प्रयास करते समय Tcl को क्रैश होने से रोकने का कोई तरीका है?
आदर्श रूप में, मुझे मुझे अपने स्वयं के परिभाषित व्यवहार के साथ प्रतिस्थापित करने की अनुमति देनी चाहिए - जैसे कि त्रुटि का प्रावधान करना और eval
के साथ जारी रखना।
संपादित:
दुर्भाग्य से, मैं केवल Tcl 8.4 उपयोग कर सकते हैं।
proc handle_unknown_label {cmd args} { ... }
और उसके बाद:
मैं निम्नलिखित, as suggested here कर की कोशिश की
rename unknown _old_system_unknown
rename handle_unknown_label unknown
catch {set ret [eval $x]} err
rename unknown handle_unknown_label
rename _old_system_unknown unknown
लेकिन मैं अभी भी eval
के लिए समान व्यवहार प्राप्त है, और यह निम्न त्रुटियों प्रिंट:
प्रक्रिया अज्ञात एक संरक्षित प्रो है और इसका नाम बदलकर
प्रक्रिया अज्ञात एक समर्थक है tected proc और ओवरराइड नहीं किया जाएगा
प्रक्रिया अज्ञात एक संरक्षित proc है और नाम दिया नहीं किया जाएगा
प्रक्रिया अज्ञात एक संरक्षित proc है और ओवरराइड नहीं हो जाएगी
लागू नहीं है लेकिन यदि आप एक फ़ाइल पढ़ रहे हैं और इसे विकसित कर रहे हैं तो आप इसके बजाय फ़ाइल को स्रोत भी कर सकते हैं, नहीं? –
यह टीसीएल दुभाषिया क्या पर्यावरण है? मैं उस "संरक्षित proc" त्रुटि से परिचित नहीं हूं। –
@glenn दिलचस्प। तो यह कुछ ऐसा हो सकता है जो मेरी फर्म में अक्षम हो? –