ஸ்டேக் ட்ரேஸ் - 1

"ஹாய்! இன்று நான் உங்களுக்கு ஸ்டாக் ட்ரேஸ் என்றால் என்ன என்று சொல்கிறேன். ஆனால் முதலில் நான் உங்களுக்கு ஸ்டாக் என்றால் என்ன என்று சொல்ல வேண்டும்."

"ஒரு குறிப்பிட்ட பணியாளருக்கான வழிகாட்டுதல்கள் - காகிதங்களின் குவியலை கற்பனை செய்து பாருங்கள். நீங்கள் ஒரு புதிய பணியை குவியலின் மேல் வைக்கலாம் அல்லது மேலே இருந்து ஒரு பணியை எடுக்கலாம். அதாவது, பணிகள் பெறப்பட்ட வரிசையில் செயல்படுத்தப்படாது. . மிக சமீபத்தில் பைல் மீது வைக்கப்படும் பணி முதலில் செயல்படுத்தப்படும். ஒரு தொகுப்பின் கூறுகளை இவ்வாறு கட்டமைப்பது ஒரு அடுக்கை உருவாக்குகிறது .

" ஜாவாவில் அதற்கான சிறப்புத் தொகுப்பு உள்ளது - ஸ்டேக் . இது 'ஒரு உறுப்பைச் சேர்ப்பது' மற்றும் 'எடுத்துக்கொள்ள (பெறுதல்)' முறைகளைக் கொண்ட ஒரு தொகுப்பு. நீங்கள் யூகித்தபடி, கடைசியாகச் சேர்க்கப்பட்ட உறுப்பு முதலில் இருக்கும் எடுக்கப்படும்."

"நேர்மையாகத் தெரிகிறது."

"அருமை. ஸ்டாக் ட்ரேஸ் என்றால் என்ன என்பதை இப்போது நான் விளக்குகிறேன் ."

"ஜாவா நிரல் முறையில் A எனப்படும் முறை B என்று கற்பனை செய்து பாருங்கள் , இது முறை C என்று அழைக்கப்படுகிறது, இது முறை D என்று அழைக்கப்படுகிறது. முறை B யிலிருந்து வெளியேற , நாம் முதலில் முறை C யிலிருந்து வெளியேற வேண்டும் , அதைச் செய்ய - முதலில் D முறையிலிருந்து வெளியேற வேண்டும் . இது நடத்தை ஒரு அடுக்கை ஒத்திருக்கிறது."

"அதை ஏன் ஒத்திருக்கிறது என்று சொல்கிறீர்கள்?"

"எங்கள் காகிதங்களின் அடுக்கின் நடுவில் சில பணிகளைச் செய்ய, எடுத்துக்காட்டாக, நீங்கள் முதலில் அதன் மேல் உள்ள அனைத்து பணிகளையும் செயல்படுத்த வேண்டும்."

"சில ஒற்றுமைகள் உள்ளன, ஆனால் நான் எல்லாவற்றையும் சரியாகப் புரிந்துகொள்கிறேன் என்று எனக்குத் தெரியவில்லை."

"பார். ஒரு அடுக்கு என்பது தனிமங்களின் தொகுப்பாகும். குவியலில் உள்ள காகிதத் துண்டுகள் போல. மேலே இருந்து மூன்றாவது காகிதத்தை எடுக்க, நீங்கள் முதலில் இரண்டாவது காகிதத்தை எடுக்க வேண்டும், அதற்கு, நீங்கள் முதலில் எடுக்க வேண்டும். நீங்கள் நீங்கள் எப்போதும் காகித துண்டுகளை வைக்கலாம் மற்றும் எடுக்கலாம், ஆனால் நீங்கள் எப்போதும் மேல் காகிதத்தை முதலில் எடுக்க வேண்டும்."

"செயல்பாட்டு அழைப்புகளுக்கும் இதுவே பொருந்தும். முறை A அழைப்பு முறை B , இது முறை C ஐ அழைக்கிறது. A யிலிருந்து வெளியேற , நீங்கள் முதலில் B இலிருந்து வெளியேற வேண்டும், அதைச் செய்ய, நீங்கள் C இலிருந்து வெளியேற வேண்டும் ."

"காத்திருங்கள். நீங்கள் சொல்வதை நான் புரிந்து கொண்டால், ஒரு அடுக்கின் முழுக் கருத்தும் 'கடைசியாகச் சேர்க்கப்பட்ட காகிதத்தை எடுத்துக் கொள்ளுங்கள்' மற்றும் 'நீங்கள் சமீபத்தில் உள்ளிட்ட முறையிலிருந்து மட்டுமே வெளியேற முடியும்'. அது துல்லியமானதா? "

"ஆம். செயல்பாடு அழைப்புகளின் வரிசையானது 'கால் ஸ்டேக்' அல்லது வெறுமனே 'ஸ்டேக்' என்று அறியப்படுகிறது. கடைசியாக அழைக்கப்படும் செயல்பாடு, முடிவடைய முதல் செயல்பாடு ஆகும். ஒரு உதாரணத்திற்குத் தோண்டுவோம்."

தற்போதைய அழைப்பு அடுக்கைப் பெற்றுக் காட்டவும்:
public class ExceptionExample
{
  public static void main(String[] args)
  {
    method1();
  }

  public static void method1()
  {
    method2();
  }

  public static void method2()
  {
    method3();
  }

  public static void method3()
  {
     StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
    for (StackTraceElement element : stackTraceElements)
    {
       System.out.println(element.getMethodName());
    }
  }
}
விளைவாக:
getStackTrace
method3
method2
method1
main

"சரி. ஃபங்ஷன் கால்கள் பற்றி எல்லாம் எனக்குக் கிடைக்கிறது. ஆனால் இது என்ன StackTraceElement?"

"ஜாவா மெஷின் அனைத்து செயல்பாடு அழைப்புகளையும் கண்காணிக்கும். அதற்காக, இது ஒரு சிறப்பு சேகரிப்பைக் கொண்டுள்ளது - ஸ்டேக். ஒரு செயல்பாடு மற்றொன்றை அழைக்கும் போது, ​​ஜாவா இயந்திரம் ஒரு புதிய StackTraceElement பொருளை அடுக்கி வைக்கிறது . ஒரு செயல்பாடு முடிந்ததும், அந்த உறுப்பு அகற்றப்படும். ஸ்டாக்கில் இருந்து. ஸ்டாக் எப்போதும் 'செயல்பாட்டு அழைப்புகளின்' தற்போதைய நிலையைப் பற்றிய புதுப்பித்த தகவலை சேமிக்கிறது .

"ஒவ்வொரு StackTraceElement பொருளும் அழைக்கப்படும் முறையைப் பற்றிய தகவலைக் கொண்டுள்ளது. குறிப்பாக, getMethodName முறையைப் பயன்படுத்தி முறையின் பெயரைப் பெறலாம் ."

"மேலே உள்ள எடுத்துக்காட்டில் இது எவ்வாறு செயல்படுகிறது என்பதை நீங்கள் பார்க்கலாம்:

1) அழைப்பு அடுக்கைப் பெறுகிறோம்.

2) அதன் வழியாகச் செல்ல ஒவ்வொரு லூப்பைப் பயன்படுத்துகிறோம் . அது என்ன என்பதை நீங்கள் மறந்துவிடவில்லை என்று நம்புகிறேன்.

3) முறையின் பெயர்களை System.out க்கு வெளியிடுகிறோம் .

"கவர்ச்சியானது! மேலும் சிக்கலானது அல்ல. நன்றி, ரிஷி!"