Throwable.printStackTrace(PrintStream s)
পুরো স্ট্যাক ট্রেস প্রিন্ট করার কোনও উপায় আছে , যাতে আমি চূড়ান্ত লাইনের বাইরে দেখতে পারি "... 40 more"
?
Throwable.printStackTrace(PrintStream s)
পুরো স্ট্যাক ট্রেস প্রিন্ট করার কোনও উপায় আছে , যাতে আমি চূড়ান্ত লাইনের বাইরে দেখতে পারি "... 40 more"
?
উত্তর:
আপনার দরকার নেই; এই তথ্য স্ট্যাক ট্রেস অন্য কোথাও উপস্থিত। এর ডক্স থেকে printStackTrace()
:
অক্ষরযুক্ত লাইন উপস্থিতি নোট করুন
"..."
। এই রেখাগুলি ইঙ্গিত দেয় যে এই ব্যতিক্রমের জন্য স্ট্যাক ট্রেসের অবশিষ্ট অংশগুলি ব্যতিক্রমের স্ট্যাক ট্রেসটির নীচে থেকে ফ্রেমের সংখ্যার সাথে মেলে যা এই ব্যতিক্রমের কারণে ঘটেছিল ("সংলগ্ন" ব্যতিক্রম)।এই শর্টহ্যান্ডটি সাধারণ ক্ষেত্রে আউটপুটটির দৈর্ঘ্যকে হ্রাস করতে পারে যেখানে "কার্যকারী ব্যতিক্রম" ধরা পড়ে একই পদ্ধতি থেকে মোড়ানো ব্যতিক্রম নিক্ষেপ করা হয়।
অন্য কথায়, "... x more"
একমাত্র শৃঙ্খলযুক্ত ব্যতিক্রমে উপস্থিত হয় এবং কেবল যখন x
স্ট্যাক ট্রেসের শেষ লাইনগুলি ইতিমধ্যে অন্য জড়িত ব্যতিক্রমের স্ট্যাক ট্রেসের অংশ হিসাবে উপস্থিত থাকে।
মনে করুন যে কোনও পদ্ধতি ব্যতিক্রম ফু কে ধরেছে, ব্যতিক্রম বারে এটি জড়িয়ে রাখে এবং বারটি ছুড়ে ফেলে। তারপরে ফু এর স্ট্যাক ট্রেসটি ছোট করা হবে। যদি আপনি কোনও কারণে পুরো ট্রেস চান, আপনার যা করতে হবে তা হ'ল ...
ফু এর স্ট্যাক ট্রেসের আগে শেষ লাইনটি গ্রহণ করা এবং বারের স্ট্যাক ট্রেসটিতে এটি সন্ধান করা; এই লাইনের নীচে সবকিছুই ফু এর স্ট্যাক ট্রেসে মুদ্রিত হত in
থ্রোয়েবল.প্রিন্টস্ট্যাকট্রেস () এর ডকুমেন্টেশন থেকে স্ট্যাক ট্রেস নেওয়া যাক :
HighLevelException: MidLevelException: LowLevelException
at Junk.a(Junk.java:13)
at Junk.main(Junk.java:4)
Caused by: MidLevelException: LowLevelException
at Junk.c(Junk.java:23)
at Junk.b(Junk.java:17)
at Junk.a(Junk.java:11)
... 1 more
Caused by: LowLevelException
at Junk.e(Junk.java:30)
at Junk.d(Junk.java:27)
at Junk.c(Junk.java:21)
... 3 more
নীচের অংশে সবচেয়ে নেস্টেড ("মূল কারণ") থেকে কারণগুলি মুদ্রিত স্ট্যাক ট্রেসের অন্তর্গত যা থেকে প্রদর্শিত হয়।
এক্ষেত্রে মূল কারণটি হ'ল LowLevelException
, যা ঘটেছিল MidLevelException
, যার কারণ ছিল HighLevelException
।
সম্পূর্ণ স্ট্যাক ট্রেস পেতে আপনাকে ঘেরের ব্যতিক্রমগুলির ফ্রেমগুলি দেখতে হবে (এবং এর ঘেরটি ব্যতিক্রমগুলি):
সুতরাং যদি আমরা সম্পূর্ণ স্ট্যাক ট্রেস পেতে চাই তবে আমরা LowLevelException
নিম্নলিখিতটি করতাম:
MidLevelException
)
বাদ দেওয়া ফ্রেমগুলি সন্ধান করুনMidLevelException
( HighLevelException
) এর সংলগ্ন ব্যতিক্রমটি দেখুনআপনার সম্পূর্ণ স্ট্যাক ট্রেস এর পরে দেখে মনে হচ্ছে:
LowLevelException
at Junk.e(Junk.java:30)
at Junk.d(Junk.java:27)
at Junk.c(Junk.java:21)
// From MidLevelException stack trace
at Junk.b(Junk.java:17)
at Junk.a(Junk.java:11)
// From HighLevelException stack trace
at Junk.main(Junk.java:4)
পার্শ্ব নোট:
এমন কোনও ক্ষেত্রে থাকতে পারে যেখানে কোনও ফ্রেম তালিকাভুক্ত নয়, যেমন:
HighLevelException: MidLevelException
at Junk.main(Junk.java:4)
Caused by: MidLevelException
... 1 more
এই ঘটতে পারে কারণ এটি একই লাইনে তৈরি করা হয়েছে: new HighLevelException(new MidLevelException())
। এতে বিভ্রান্ত হবেন না, উপরে বর্ণিত পদ্ধতিটি এখনও কাজ করে, ব্যতিক্রম থেকে ব্যবহারের জন্য কেবল কোনও ফ্রেম নেই, এটি বন্ধ করে দিয়ে চালিয়ে যান।
কিছু ক্ষেত্রে আপনি প্রথম ফ্রেমটি বাদ পড়েছিলেন যা বাদ দেওয়া হয়নি (উপরের লাইনটি ... X more
) দেখে নিজেকে বাঁচাতে পারেন । আপনি যদি জানেন যে কোন পদ্ধতিগুলি সেই লাইনে পদ্ধতিটিকে কল করে আপনি সরাসরি ঘেরযুক্ত ব্যতিক্রমের ফ্রেমে কলকারীদের জন্য অনুসন্ধান করতে পারেন:
HighLevelException: MidLevelException: LowLevelException
at Junk.c(Junk.java:29)
at Junk.b(Junk.java:21)
at Junk.a(Junk.java:13)
at Junk.main(Junk.java:4)
Caused by: MidLevelException
// You know Junk.d is only called by Junk.b
at Junk.d(Junk.java:35)
... 3 more
...
প্রথম ফ্রেম যা আলাদা which তবে এটি অন্তত একই শ্রেণিতে থাকবে যা এটি সন্ধানে সহায়তা করে।