ভিজ্যুয়াল স্টুডিও: পরিচালিত ব্যতিক্রমগুলি কীভাবে ভাঙবেন?


165

আমি পরিচালনা করতে চাইলে ভিজ্যুয়াল স্টুডিওটি ভেঙে যেতে চাই (যেমন আমি কেবল "প্রথম সুযোগ" বার্তাটি দেখতে চাই না, আমি আসল ব্যতিক্রমটি ডিবাগ করতে চাই)।

উদাহরণস্বরূপ, আমি ব্যতিক্রমটি থেকে ডিবাগারটি ভাঙ্গতে চাই:

try
{
   System.IO.File.Delete(someFilename);
}
catch (Exception)
{
   //we really don't care at runtime if the file couldn't be deleted
}

আমি ভিজুয়াল স্টুডিও.নেটের জন্য এই নোটগুলি জুড়ে এসেছি:

1) ভিএসএননেটে ডিবাগ মেনুতে যান >> "ব্যতিক্রমগুলি ..." >> "সাধারণ ভাষা রানটাইম ব্যতিক্রম" >> "সিস্টেম" এবং "সিস্টেম.নুলরেফারেন্স এক্সেক্সশন" নির্বাচন করুন

2) সেই কথোপকথনের নীচে একটি "ব্যতিক্রম ছোঁড়া হলে:" গ্রুপ বাক্সে, "ডিবাগারে ব্রেক করুন" নির্বাচন করুন

3) আপনার দৃশ্য চালান। ব্যতিক্রম নিক্ষেপ করা হলে, ডিবাগারটি থামবে এবং আপনাকে এমন একটি ডায়লগের সাথে জানিয়ে দেবে যা এমন কিছু বলে: "" সিস্টেম.নুলআরফারেন্স এক্সেক্সশন "টাইপের একটি ব্যতিক্রম ছুঁড়ে দেওয়া হয়েছে [[বিরতি] [চালিয়ে যান]"

আঘাত [ব্রেক]। এটি আপনাকে কোডের লাইনে রাখবে যা সমস্যার সৃষ্টি করছে।

তবে সেগুলি ভিজ্যুয়াল স্টুডিও 2005-এ প্রয়োগ হয় না ( ডিবাগ মেনুতে কোনও ব্যতিক্রম বিকল্প নেই )।

" ডিবাগারে ব্রেক " বিকল্পের সাথে "বাক্সটি যখন ছুঁড়ে ফেলা হবে " গ্রুপ বাক্সে এই বিকল্পগুলি সংলাপটি কোথায় খুঁজে পাবে তা কি কেউ জানেন ?

আপডেট: সমস্যাটি ছিল আমার ডিবাগ মেনুতে ব্যতিক্রম আইটেমটি ছিল না। আমি মেনুটিকে ম্যানুয়ালি যুক্ত করতে কাস্টমাইজ করেছি।


9
ভিএস ২০১৫ এ এটি ডিবাগ-> উইন্ডোজ-> ব্যতিক্রমী সেটিংসের আওতায় ছিল
পিটারভাইর্মেন্ট

আমাকে কিছুটা সময় লেগেছিল কিভাবে এটি পুনরুদ্ধার ডিফল্ট ব্যতিক্রম সেটিংস পর আমি, সেই কারণে একটি নতুন উত্তর ব্যতিক্রম সেটিংয়ের কিছু পরিবর্তন করেছেন। ব্যতিক্রম সেটিংসটি ডিফল্টে পুনরুদ্ধার করুন
মবিটো

উত্তর:


170

কোনও সমাধান খোলা থাকলে, ডিবাগ - ব্যতিক্রম ( Ctrl+ D, E) মেনু বিকল্পে যান। সেখান থেকে আপনি থ্রাউন বা ব্যবহারকারী-না-করা ব্যতিক্রমগুলি ভাঙ্গতে বেছে নিতে পারেন ।

সম্পাদনা: আমার উদাহরণটি সি # "প্রোফাইল" দিয়ে সেট আপ হয়েছে সম্ভবত এটি অন্যান্য প্রোফাইলের জন্য নেই?


10
আমার কাছে এ জাতীয় বিকল্প নেই। এটা আমার বিভ্রান্তি ব্যাখ্যা করবে।
ইয়ান বয়ড

58
আমার ডিবাগ মেনু ছিল, তবে কোনও ব্যতিক্রম বিকল্প নেই। আমি মেনুটিকে ম্যানুয়ালি যুক্ত করতে কাস্টমাইজ করেছি; শর্টকাট কীটি যেভাবেই কাজ করেছে (Ctrl + Alt + E)
ইয়ান বয়ড

3
এছাড়াও, আপনি "সরঞ্জাম", "আমদানি রফতানি সেটিংস" এ গিয়ে ভিএস2010 পরিবেশটি পুনরায় সেট করতে পারেন এবং সি # পরিবেশে একটি রিসেট নির্বাচন করুন ... এতে ব্যতিক্রম সাবমেনু আইটেম রয়েছে
বিয়ার্ডিনাসুট

14
আমি Common Language Runtime Exceptions> <All Common Language Runtime Exceptions not in this list>ভিজ্যুয়াল স্টুডিও 2017 এর অধীনে নির্বাচন করেছি এবং আমার সমস্ত বুনো স্বপ্ন বাস্তব হয়েছিল।
অ্যারন নিউটন

9
ভিজ্যুয়াল স্টুডিও 2015: ডিবাগ -> উইন্ডোজ -> ব্যতিক্রম সেটিংস
achecopar

47

ভিএস ২০০৫ এ একটি 'ব্যতিক্রম' উইন্ডো রয়েছে ... ডিবাগ করার সময় Ctrl+ Alt+ চেষ্টা Eকরুন এবং আপনি যে ব্যতিক্রমটি থামাতে চান তার জন্য 'থ্রাউন' চেকবক্সটিতে ক্লিক করুন।


ঠিক এটাই আমি চাই। মেনুতে কোথায়? আমার জীবনের জন্য আমি এটি খুঁজে না।
ইয়ান বয়ড

কীবোর্ড শর্টকাট প্রোফাইল অনুসারে পরিবর্তন করতে পারে (সি # বিকাশকারী, সি ++ বিকাশকারী, ইত্যাদি)
আসফ আর

1
আমার একটি মেনু আইটেম রয়েছে: ডিবাগ -> ব্যতিক্রম। এটি ভিএস2005 পেশাদারের সাথে। আপনি কি এক্সপ্রেস সংস্করণ চালাচ্ছেন?
রব ওয়াকার

5
আপনি যদি ব্যতিক্রম মেনু আইটেমটি চান: সরঞ্জাম নির্বাচন করুন | কাস্টমাইজ করুন .... কমান্ড ট্যাবে ক্লিক করুন। বিভাগ বাক্সে ডিবাগ বিভাগটি নির্বাচন করুন। ব্যতিক্রমগুলি ... কমান্ড আইটেমটি সন্ধান করুন, তারপরে এটিকে অ্যাপ্লিকেশনটির শীর্ষে ডিবাগ মেনুতে টেনে আনুন এবং এটিকে মেনুতে যথাযথ স্থানে ফেলে দিন। (মন্তব্যগুলিতে পাওয়া গেছে: ব্লগস.ভারটিগো.com / পার্সোনাল / স্কিথ / ব্লগ / অর্চিভ / ২০০7/০/0/২০/২ )
সোটো

33

এক্সপেশন সেটিংসের জন্য নতুন জায়গা খুঁজে পেতে আমাকে কিছুটা সময় নিয়েছে, সুতরাং একটি নতুন উত্তর।

যেহেতু ভিজ্যুয়াল স্টুডিও 2015 সালটি ব্যতিক্রমী সেটিংস উইন্ডোতে (ডিবাগ-> উইন্ডোজ-> ব্যতিক্রম সেটিংস) কোনও ব্যতিক্রমগুলি বন্ধ হওয়া আপনি নিয়ন্ত্রণ করেন। শর্টকাট এখনও আছে Ctrl- Alt- E

কাস্টম ব্যতিক্রমগুলি হ্যান্ডেল করার সহজ উপায়টি হল "এই তালিকায় নয় সমস্ত ব্যতিক্রম" নির্বাচন করা।

এখানে ইংরেজি সংস্করণ থেকে একটি স্ক্রিনশট দেওয়া হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

এখানে জার্মান সংস্করণ থেকে একটি স্ক্রিনশট দেওয়া হয়েছে:

এখানে চিত্র বর্ণনা লিখুন


16

ভিসুয়াল স্টুডিও 2015 থেকে এবং অনওয়ার্ড, আপনি "ব্যতিক্রম সেটিংস" কথোপকথন (যাওয়ার প্রয়োজন Ctrl+ + Alt+ + E) এবং "কমন ভাষা রানটাইম ব্যতিক্রমসমূহ" (বা একটি নির্দিষ্ট আপনি অর্থাত চান টিক ArgumentNullException) এটি বিরতি করতে ঘাঁটা ব্যতিক্রম।

পদক্ষেপ 1 ধাপ 1 পদক্ষেপ 2 ধাপ ২


8

ডিবাগার পৃষ্ঠার সাহায্যে ব্যতিক্রম পরিচালনা পরীক্ষা করে দেখুন , এটি কীভাবে সেট আপ করবেন তা ব্যাখ্যা করে।

মূলত, পদক্ষেপগুলি এখানে (ডিবাগিংয়ের সময়):

  1. ডিবাগ মেনুতে, ব্যতিক্রমগুলি ক্লিক করুন।

  2. ব্যতিক্রম সংলাপ বাক্সে, ব্যতিক্রমগুলির পুরো বিভাগের জন্য থ্রাউন নির্বাচন করুন, উদাহরণস্বরূপ, প্রচলিত ভাষা রানটাইম ব্যতিক্রম।

    -অথবা-

    ব্যতিক্রমের বিভাগের জন্য নোডটি প্রসারিত করুন, উদাহরণস্বরূপ, প্রচলিত ভাষা রানটাইম ব্যতিক্রমগুলি এবং সেই বিভাগের মধ্যে একটি নির্দিষ্ট ব্যতিক্রমের জন্য থ্রাউন নির্বাচন করুন।


1

আমি যে কৌশলটি ব্যবহার করি তা হ'ল নিম্নলিখিতগুলির মতো। আপনি যে ডিবাগ করতে এবং নিম্নলিখিত কাঠামোটি ব্যবহার করার চেষ্টা করছেন তার উপর নির্ভর করে আপনি এক বা একাধিক চেষ্টা ক্যাচ ব্লক ব্যবহার করতে পারেন এমন একটি বৈশ্বিক পরিবর্তনশীল সংজ্ঞায়িত করুন:

if(!GlobalTestingBool)
{
   try
   {
      SomeErrorProneMethod();
   }
   catch (...)
   {
      // ... Error handling ...
   }
}
else
{
   SomeErrorProneMethod();
}

আমি দেখতে পেয়েছি এটি পরীক্ষার দিক থেকে আমাকে আরও কিছুটা নমনীয়তা দেয় কারণ আইডিই চালু না হওয়াতে এখনও কিছু ব্যতিক্রম রয়েছে।


3
এটি একটি দরকারী কৌশল - এটি পরিচালনা করা ব্যতিক্রমটিকে একটি অপরিবর্তিত ব্যতিক্রম হিসাবে রূপান্তরিত করে, তাই ডিবাগারটি স্বয়ংক্রিয়ভাবে এটিকে থামিয়ে দেয়। আমি নিশ্চিত না কেন এটি হ্রাস পেয়েছে, যদি না এটি হয় যে আপনার গ্লোবাল টেস্টিংবুল সেট করার কোনও ভাল উপায় নেই। আরেকটি, সম্ভবত আরও ভাল বিকল্প হ'ল ডিবাগার.আইএসএটাচড ব্যবহার করা।
জো হোয়াইট

আপনাকে এটিকে প্রতিটি চেষ্টা / ক্যাপচার এবং আপনার কোডটি পুনরায় সংকলন করতে হবে। আপনি যদি ইতিমধ্যে কোনও ডিবাগিংয়ের মাঝামাঝি হয়ে থাকেন তবে খুব কার্যকর নয়।
সর্বাধিক

কোনও ব্যতিক্রমী শর্ত থাকলে - অগ্রহণযোগ্য কিছু - কোডে একটি ব্যতিক্রম ছুঁড়ে ফেলা উচিত এবং এটি এমন একটি স্তরে ধরা উচিত যেখানে এটি কীভাবে পরিচালনা করা যায় সে সম্পর্কে সিদ্ধান্ত নেওয়া যেতে পারে। এই জাতীয় কোড কার্যকর করার পথগুলিকে জটিল করে তোলে।
লি ওডেস

আমি জানি এটি সত্যিই পুরানো উত্তর, তবে আমার মতো এলোমেলো গুগলারের জন্য, আপনি কেবল যুক্ত করতে পারেনcatch(){/*handle or not*/ throw; } // throw without any exception specified will rethrow original exception with original callstack etc
জানু 'স্প্লিট' কে

0

অনলাইন ডকুমেন্টেশনটি কিছুটা অস্পষ্ট বলে মনে হচ্ছে, তাই আমি কেবল একটি সামান্য পরীক্ষা করলাম। ব্যতিক্রম সংলাপ বাক্স থেকে নিক্ষিপ্ত হওয়া ভাঙ্গার বাছাইয়ের ফলে প্রোগ্রামটি কার্যকরভাবে কোনও ব্যতিক্রম, পরিচালনা করা বা নিয়ন্ত্রণহীনভাবে বিরতি ঘটে । আপনি যদি কেবল পরিচালনা করা ব্যতিক্রমগুলি ভাঙতে চান তবে মনে হয় আপনার একমাত্র অবলম্বন হ'ল আপনার কোডটি অতিক্রম করে আপনার সমস্ত পরিচালিত ব্যতিক্রমগুলিতে ব্রেকপয়েন্ট স্থাপন করা। এটি কিছুটা অতিরিক্ত মনে হচ্ছে, তাই আপনি যখনই কোনও ব্যতিক্রম হ্যান্ডেল করেন তখন ডিবাগ স্টেটমেন্ট যুক্ত করা ভাল। তারপরে আপনি যখন আউটপুটটি দেখবেন, আপনি কোডের সেই লাইনে একটি ব্রেকপয়েন্ট সেট করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.