অ্যান্ড্রয়েড স্টুডিও আইডিই: ব্যতিক্রম বিরতি


138

দেখে মনে হচ্ছে আমার অ্যান্ড্রয়েড স্টুডিও ডিফল্টরূপে কোনও ব্যতিক্রম ভাঙতে চায় না। "যে কোনও ব্যতিক্রম" এ বিরতি সক্ষম করা প্রকৃত জেডিই লাইব্রেরিগুলির মধ্যে বিরতি শুরু করে। কেবলমাত্র আমার কোডের মধ্যে ব্যতিক্রম হলে তা ভাঙতে বাধ্য করার কোনও উপায় আছে?

ভিজ্যুয়াল স্টুডিও মহাবিশ্ব থেকে এখানে এসে ডিফল্ট ভিএস ডিবাগ আচরণের সন্ধান করছেন।

উত্তর:


206

সমস্ত ব্যতিক্রম ভাঙার জন্য, ধরা পড়েছে বা ছাড়ানো হয়েছে:

  1. রান -> ব্রেকপয়েন্টগুলি দেখুন মাধ্যমে ব্রেকপয়েন্টস উইন্ডোটি খুলুন ।
  2. ব্রেকপয়েন্টস ডায়ালগ প্রদর্শিত হবে। বাম ফলকে, নীচে স্ক্রোল করুন। জাভা ব্যতিক্রম ব্রেকপয়েন্টগুলির আওতায় যে কোনও ব্যতিক্রম নির্বাচন করুন
  3. ডান ফলকে নির্বাচিত যে কোনও ব্যতিক্রম সহ , নীচে কনফিগার করুন:
    • স্থগিত: চেক করা হয়েছে
    • সমস্ত: নির্বাচিত
    • কন্ডিশন: !(this instanceof java.lang.ClassNotFoundException)
    • বিজ্ঞপ্তি: উভয়কেই বাদ দেওয়া হয়েছে এবং বাদ দেওয়া ব্যতিক্রম নির্বাচন করা হয়েছে

ব্রেকপয়েন্টস ডায়ালগ

  1. ফিল্টারগুলি লাইব্রেরি নামব্যবধান যে ডিবাগার উল্লেখ নির্ধারণ করা উচিত বিরতি: চেক ক্লাস ফিল্টার (ক্লাস ফিল্টারিং সক্রিয় করতে চেকবক্সটি যেমন @Scott বার্তা উল্লেখ )। তারপরে ক্লাস ফিল্টারস ডায়ালগটি খুলতে ... (এলিপসিস) বোতামটি ক্লিক করুন । প্যাটার্ন যুক্ত করুন(প্যাটার্ন যুক্ত করুন) বোতামে ক্লিক করে শ্রেণীর নাম স্থানের নিদর্শনগুলি নির্দিষ্ট করুন। প্রবেশ করান:
    • com.myapp.* (এটি আপনার অ্যাপ্লিকেশনটির নেমস্পেস উপসর্গ দিয়ে প্রতিস্থাপন করুন)
    • java.* (দ্রষ্টব্য: ওপির প্রশ্ন অনুসারে, এটিকে জাভা লাইব্রেরিতে না ভাঙ্গার জন্য ছেড়ে দিন)
    • android.* (উপরের মত, কেবল নিজের অ্যাপ কোডটি ডিবাগ করার জন্য ছেড়ে দিন)
    • প্রয়োজনীয় হিসাবে অতিরিক্ত অতিরিক্ত স্থান যুক্ত করুন (উদাহরণস্বরূপ তৃতীয় পক্ষের লাইব্রেরি)

ক্লাস ফিল্টার

  1. প্রেস ঠিক আছে , তারপর ব্রেকপয়েন্ট ডায়ালগ খারিজ করুন।

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

6
@ অ্যান্ড্রয়েডদেব: আমি মনে করি এটি বাস্তবে বোধগম্য। ডিফল্টরূপে এটি নেই সব ব্যতিক্রম বিরতি। আপনাকে শর্তাদি এবং ফিল্টার সেট করতে হবে না। তবে ওপি বিশেষত ব্যতিক্রমগুলি (তার নিজস্ব কোডে ব্যতিক্রম) ফিল্টারিংয়ের জন্য অনুরোধ করেছিল
মাকিং হাঁস

4
এক্সকোড / আইওএস বিকাশকারী এবং অ্যান্ড্রয়েড-এন00 বি হিসাবে, আমি জানতাম না যে কোনও ব্রেকআপপয়েন্ট গুলি চালানোর জন্য, অ্যান্ড্রয়েড স্টুডিওতে আপনি অ্যাপ্লিকেশনটি শুরু করতে প্লে-লাইক (ত্রিভুজ) আইকনটি ক্লিক করতে পারবেন না। আপনার ডানদিকে পাশের বাগ-মত আইকনটি ক্লিক করে অ্যাপ্লিকেশনটি শুরু করতে হবে।
xaphod

@ এক্সফোড আরেকটি উপায় হ'ল রিলিজ মোডে চালানো (প্লে বোতাম টিপুন), তারপরে অ্যাপ্লিকেশন শুরু হয়ে গেলে ডিবাগারটি সংযুক্ত করুন (আইকনের নীচে ডানদিকে সবুজ বাগ সহ প্রতিকৃতি দিয়ে আয়তক্ষেত্রটি চাপিয়ে), তারপরে নির্বাচন করুন প্রক্রিয়া ডিবাগ করা হবে। অ্যাপ্লিকেশন স্টার্ট-আপ কোডের কোনওটি ডিবাগিং না করলে এটি আরও দ্রুত। দেখুন: developer.android.com/tools/debugging/…
সিজেবিএস

আপনি যদি জুনিট ব্যবহার করছেন (ইউনিট পরীক্ষার সময় ডিবাগিং), আপনি ক্লাস ফিল্টারটি যুক্ত করতে চাইতে পারেনorg.junit.*
টমাস ভিনসেন্ট

34

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


4
ব্রেকপয়েন্টস উইন্ডোটির সন্ধানকারী যে কোনও ব্যক্তির জন্য এটি মেনুতে, চালানো -> ব্রেকপয়েন্টগুলি দেখুন।
প্যাট্রিক

2
আমি এটি চেষ্টা করছি, কিন্তু এটি কাজ করতে পারি না। ক্লাস ফিল্টারটি কী হওয়া উচিত? কিছু উদাহরণ দিতে পারে?
বার্ট ফ্রেডারিচস

1
আমি একই নৌকায় আছি - ক্লাস ফিল্টারগুলি কেবল আমার জন্য কাজ করছে বলে মনে হয় না। আমি com.mycompany ব্যবহার করে দেখেছি but *
কাইলোটান

এটি কেবলমাত্র জাইগোটআইনিট.জভাতে প্রতিবার থামে! খুব অকেজো! কীভাবে কাটিয়ে উঠব ???
রেনেউদ সেরারাতো

রান-> ব্রেকপয়েন্ট দেখুন .... হ্যাঁ, আমরা চাই না যে "উইন্ডো" মেনুতে কোনও উইন্ডো প্রদর্শিত হবে!
ল্যারিবুড

7

আপনার কোডের সমস্ত ব্যতিক্রম এবং অন্য ব্যতিক্রমগুলি ভাঙার জন্য যদি তা অবহিত থাকে:

এই পদ্ধতিগুলি স্বাভাবিক অপারেশনের সময় রানটাইম নিক্ষেপ করে এমন ব্যতিক্রমগুলি ফিল্টার করে (খুব ব্যতিক্রমী নয়, তারা কি?) এটি ক্লাস ফিল্টার ব্যবহার করে না, যেহেতু এটি খুব বেশি ফিল্টার করে; আপনার কোডগুলিতে বাগগুলি প্রায়শই রানটাইম ক্লাসকে ব্যতিক্রম ছুঁড়ে ফেলার কারণ দেয় (যেমন শেষের দিকে একটি অ্যারে তালিকায় প্রবেশ করা)।

  1. সক্ষম করুন জাভা ব্যতিক্রম ব্রেকপয়েন্ট / কোন ব্যতিক্রম জন্য uncaught ব্যতিক্রম শুধুমাত্র।

  2. ধরা পড়া এবং অপ্রকাশিত ব্যতিক্রমগুলির জন্য Exception (java.lang)ক্লাসের জন্য একটি নতুন জাভা ব্যতিক্রম ব্রেকআপপয়েন্ট যুক্ত করুনশর্ত সক্ষম করুন এবং এটিতে এটি সেট করুন:

        !(this instanceof java.lang.ClassNotFoundException || this instanceof android.system.ErrnoException || this instanceof java.io.FileNotFoundException || this instanceof javax.net.ssl.SSLHandshakeException || this instanceof javax.net.ssl.SSLPeerUnverifiedException || this instanceof android.system.GaiException || this instanceof java.net.SocketTimeoutException || this instanceof java.net.SocketException || this instanceof java.security.NoSuchAlgorithmException)
    

আপনার মুখোমুখি হওয়া অন্য কোনও ব্যতিক্রমী ব্যতিক্রমী শর্তে বর্জন তালিকায় যুক্ত করুন। (বিটিডাব্লু, ব্যবহার করে java.lang.Exceptionকার্যকরভাবে দ্বিতীয় "কোনও ব্যতিক্রম" এন্ট্রি পাওয়ার একটি উপায়))


ব্যবহার করার চেয়ে ভাল নয়! (একটি || খ || গ) এর পরিবর্তে (ক) &&! (খ) &&! (সি)
সিফ 3us
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.