2010-09-10 17 views
7

मैं Silverlight 4 में नियंत्रण के इनपुट को सत्यापित करने के लिए अपवादों का उपयोग कर रहा हूं। जब मैं एक अवैध इनपुट अपवाद फेंकता हूं, तो वीएस 2010 पॉपअप प्रदर्शित करता है और प्रोग्राम को रोकता है। मैं इसे अनदेखा करता हूं और प्रोग्राम को फिर से शुरू करता हूं, और सबकुछ ठीक रहता है (क्योंकि अपवाद का उपयोग सत्यापन त्रुटि को सिग्नल करने के लिए किया जाता है।) क्या उस अपवाद को अनदेखा करने का कोई तरीका है?विजुअल स्टूडियो अपवादों को अनदेखा करें?

मैं इस tutorial का पालन कर रहा हूं।

+5

लगभग की एक सटीक डुप्लिकेट: http://stackoverflow.com/questions/2689065/supress-output-from-visual-studio-output-pane-c/2689187#2689187 (और मेरा जवाब यहां समान रूप से लागू होता है)। मैं उपयोगकर्ता इनपुट को प्रमाणित करने के लिए अपवादों का उपयोग करने के खिलाफ सलाह दूंगा - यदि कुछ भी है, तो सही इनपुट अपवाद है और नियमों को गलती है, न कि दूसरी तरफ। –

+0

मुझे पता है। लेकिन ऐसा लगता है कि सिल्वरलाइट ऐसा करता है। (या ऐसा लगता है। मैं एसएल के लिए नया हूं।) –

+0

आप 'try *' दृष्टिकोण पर विचार कर सकते हैं, जैसे 'int.TryParse ("123", ref परिणाम)' जो 'बूल' देता है जो दर्शाता है कि ऑपरेशन सफल हुआ है या नहीं । – zneak

उत्तर

16

डीबग -> अपवाद -> सही का निशान हटाएँ

+2

हां, लेकिन आप इसे सीधे पॉपअप से अक्षम करने में सक्षम होना चाहिए। –

4

मेनू, डिबगर, अपवाद ...

कि संवाद में, आप सही का निशान 'फेंक दिया' कॉलम में एक अपवाद के लिए, एक पूरे के लिए निकाल सकते हैं की नाम स्थान। आप अपना खुद का जोड़ सकते हैं। आदि आदि।

+0

यह उपयोगी जानकारी थी और हमें एक अप्रबंधित डीएलएल का उपयोग करने से एफपीयू रजिस्टरों को रीसेट करने और सामान्य के रूप में डीबग करने में सक्षम होने के लिए एक कस्टम अपवाद बनाने की अनुमति दी गई। बेहद सुविधाजनक! – ouflak

1

आप ब्लॉक

#if !DEBUG 
     throw new Exception(); 
/// this code will be excepted in the debug mode but will be run in the release 
#endif 
+3

क्या यह अपवाद को फेंकने से नहीं रोकेगा? मैं इसे फेंकना चाहता हूं, मैं नहीं चाहता कि वीएस एप्लिकेशन को रोकें और उस बॉक्स को पॉप करें। –

1

संपत्ति है कि फेंकता है जैसे कि यह काम करना चाहिए अपवाद लगता है ऊपर इस लाना में आसपास के द्वारा कुछ फेंक ब्लॉक निष्क्रिय कर सकते हैं लेकिन जाहिरा तौर पर नहीं करता है: [System.Diagnostics.DebuggerHidden()]:

private String name; 

    [System.Diagnostics.DebuggerHidden()] 
    public String Name 
    { 
     get 
     { 
      return name; 
     } 
     set 
     { 
      if (String.IsNullOrWhiteSpace(value)) 
      { 
       throw new ArgumentException("Please enter a name."); 
      } 
     } 
    } 
2

मुझे [System.Diagnostics.DebuggerHidden()] मिल गया है यदि मैंने

डीबग> विकल्प> डिबगिंग > सामान्य> बस मेरा कोड सक्षम करें (केवल प्रबंधित)।

मैं एक्सेल ऑब्जेक्ट मॉडल का बहुत उपयोग करता हूं, और मैं वास्तव में डीबगर चलाने और सभी अपवादों को पकड़ने में सक्षम होना चाहता हूं, क्योंकि मेरा कोड सामान्य रूप से अपवाद कम है। हालांकि, एक्सेल एपीआई बहुत सारे अपवाद फेंकता है।

// [System.Diagnostics.DebuggerNonUserCode()] works too 
[System.Diagnostics.DebuggerHidden()] 
private static Excel.Range TrySpecialCells(Excel.Worksheet sheet, Excel.XlCellType cellType) 
{ 
    try 
    { 
     return sheet.Cells.SpecialCells(cellType); 
    } 
    catch (TargetInvocationException) 
    { 
     return null; 
    } 
    catch (COMException) 
    { 
     return null; 
    } 
} 
3

मैं एक सामान्य समाधान बन करने की कोशिश की, कि मैं भर में किसी भी कॉल जहाँ मैं डिबगर चाहते हैं, तो मैं एक अपवाद मिल बंद करने के लिए नहीं डाल सकता है, लेकिन मैं यह काम करने के लिए नहीं मिला।

किसी भी विचार की सराहना की जाती है। लेकिन स्पष्ट समाधान एक झंडा DoNotBreakIfException समर्थन करने के लिए VS2010 डिबगर के लिए होगा :-)

मेरा विचार

srng = ExcelTry(() => sheet.Cells.SpecialCells(cellType)); 

द्वारा

srng = TrySpecialCells(sheet, cellType); 

की तरह कोड को बदलने के लिए सक्षम होने के लिए था, जहां ExcelTry

है
[System.Diagnostics.DebuggerNonUserCode()] 
[System.Diagnostics.DebuggerHidden()] 
private static T ExcelTry<T>(Func<T> call) 
{ 
    try 
    { 
     return call(); 
    } 
    catch (TargetInvocationException) 
    { 
     return default(T); 
    } 
    catch (COMException) 
    { 
     return default(T); 
    } 
} 
+0

यह प्रविष्टि नीचे दी गई मेरी प्रविष्टि के बाद पढ़ी जानी चाहिए, जो काम कर रहा है। – Mattias

+0

"निजी स्थैतिक टी एक्सेलट्री (अभिव्यक्ति > कॉल)" और "वापसी कॉल। कॉम्पाइल()();" – Sven

0

विजुअल स्टूडियो 2015 से आगे एक अपवाद सेटिंग्स विंडो है इस।

डीबग> विंडोज> अपवाद सेटिंग्स

संबंधित मुद्दे