كيفية الحصول على وطباعة مكدس الاستدعاءات الحالي (stack trace) في Java؟
مرحبًا أيها الزملاء! لقد بدأت مؤخرًا في البرمجة بلغة Java وواجهت موقفًا: في تطبيقي متعدد الخيوط (multithreaded) تظهر أحيانًا أخطاء غريبة يصعب تتبعها. أريد في مكان معين من الكود فقط معرفة من أين جاء تيار التنفيذ — أي الحصول على مكدس الاستدعاءات الحالي (call stack) لفهم تسلسل الطرق (methods) التي أدت إلى هذه النقطة.
أعلم أنه عند حدوث استثناء (exception) يمكننا استخدام `e.printStackTrace()`، لكن ماذا لو لم يكن هناك استثناء وأنا فقط بحاجة إلى تسجيل (log) المكدس الحالي لأغراض التصحيح (debug)؟ على سبيل المثال، أريد إضافة مثل هذا التشخيص إلى الطريقة `processOrder()` لمعرفة من يستدعيها:
```java
public class OrderService {
public void processOrder(int orderId) {
// هنا أريد الحصول على المكدس وتسجيله
System.out.println("Processing order " + orderId);
// ... منطق الأعمال
}
}
```
لقد حاولت البحث في Google، لكنني وجدت العديد من الخيارات المختلفة: بعضهم يقترح `Thread.currentThread().getStackTrace()`