2010-06-24 11 views
13

जब एक MATLAB अपवाद (मेक्सप्शन ऑब्जेक्ट) बनाते हैं या चेतावनी या त्रुटि संदेश प्रिंट करते हैं, तो MATLAB आपको एक संदेश आईडी प्रदान करने देता है जो आपको फेंकने के अलावा परिभाषित करता है।MATLAB संदेश आईडी के लिए सर्वोत्तम अभ्यास?

component:mnemonic 

उदाहरण के लिए, MATLAB के अपने अपरिभाषित चर संदेश आईडी है::

MATLAB:dispatcher:nameConflict 

तो जब आप अपने खुद के कोड में अपवाद का उपयोग करें, आप क्या करते हैं

संदेश आईडी प्रारूप में है एक संदेश आईडी के लिए उपयोग करें? क्या आप MATLAB के डिफ़ॉल्ट वाले का पुन: उपयोग करते हैं? अपना खुद का बनाओ? घटक और स्मारक तारों के लिए आप क्या उपयोग करते हैं?

उत्तर

11

मैं आम तौर पर त्रुटि (या चेतावनी) message identifiers, जहाँ कोष्ठक में बातें या मौजूद नहीं हो सकता है के लिए इस पद्धति का पालन करें:

(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic 

घटक हैं:

  • className: नाम कक्षा के, यदि त्रुटि होती है तो त्रुटि एक विधि/कन्स्ट्रक्टर है।

  • parentFunction: समारोह जहां त्रुटि तब होती है एक subfunction in an m-file या एक nested function है, तो इस primary m-file function या नेस्टेड समारोह के माता पिता, क्रमशः होगा। इसलिए आप कई parentFunction घटकों को प्राप्त कर सकते हैं।

  • functionWhereErrorOccurs: इस घटक का नाम सुंदर आत्म-व्याख्यात्मक है। ;)

  • descriptiveMnemonic: मैं तनाव वर्णनात्मक। उदाहरण के लिए inputError वास्तव में मुझे कुछ भी नहीं बताता है, लेकिन notEnoughInputs यह स्पष्ट करता है कि मैंने पर्याप्त तर्क पास नहीं किए हैं। मैं हमेशा निमोनिक के लिए निचले ऊंट के मामले का उपयोग करता हूं, जहां पहले शब्द को छोड़कर किसी शब्द का पहला अक्षर पूंजीकृत होता है।

className और parentFunction घटकों कुछ हद तक निरर्थक माना जा सकता है, के बाद से MException class की stack property पहले से ही माता-पिता एम-फ़ाइल और त्रुटि के लाइन नंबर करने के लिए एक पूर्ण पथ को पहचानती है। हालांकि, message identifier के प्रयोजनों में से एक यह है कि यह आपको विशिष्ट रूप से त्रुटि के स्रोत को शिकार करने के अलावा अन्य उद्देश्यों के लिए त्रुटि की पहचान करने की अनुमति देता है।

मान लें कि आपके पास myFcn और एक वर्ग myClass है जो myFcn ओवरलोड करता है। यदि आप पहले व्यक्ति के लिए त्रुटि संदेश पहचानकर्ता बनाते हैं तो myFcn:maxIterationsReached और दूसरे के लिए एक त्रुटि संदेश पहचानकर्ता myClass:myFcn:maxIterationsReached हो, तो यह आपको DBSTOP के साथ ब्रेकपॉइंट सेट करने की अनुमति देगा जो केवल त्रुटि को रोकता है जब यह त्रुटि myClass\myFcn द्वारा बनाई जाती है और myFcn नहीं। इसी तरह, अद्वितीय चेतावनी संदेश पहचानकर्ता उपयोगी हैं कि आप विशेष रूप से विशिष्ट फ़ंक्शंस से ignore warnings चुन सकते हैं जबकि दूसरों को प्रदर्शित होने दें।

इसके अतिरिक्त, आप पहचानकर्ता में घटकों को भी शामिल कर सकते हैं जो इंगित करता है कि त्रुटि होती है जहां त्रुटि होती है package folder या private folder (लेकिन यह एक लंबे पहचानकर्ता के लिए बना सकता है) में स्थित है।

+0

अरे ... दूसरी बार आपने मेरी मदद की है। – JnBrymn

+0

@gnovice क्या आप पहले से पैकेज के साथ पूरी तरह से योग्य वर्ग नाम का उपयोग करते हैं? –

+0

@ बी 3। यह आप पर निर्भर करता है। मैं शायद इसे यथासंभव विशिष्ट बनाना चाहता हूं। – gnovice

3

मेरे काम में मैं वाईएमए का उपयोग करता हूं: (mainFunctionName) :(descriptiveMnemonic), जहां वाईएमए बस मेरे प्रारंभिक हैं। उदाहरण के लिए, मेरे UIInspect utility में शामिल सभी चेतावनियों और त्रुटियों में YMA:uiinspect:XXX जैसी आईडी हैं।