none
שגיאה: StackOverflowExeption RRS feed

  • שאלה

  • שלום,

    כתבתי לולאה שתחזור על עצמה 10000 פעמים. ובאמצע הלולאה כשהוא מגיע למספר 8254, התוכנית נעצרת ומופיעה שגיאה: StackOverflowExeption. מה אני אמור לעשות?

    תודה,

    עומר

    • הועבר על-ידי Hengzhe Li יום רביעי 18 ינואר 2012 07:25 (מאת:Microsoft Visual C#)
    יום שישי 25 נובמבר 2011 18:27

תשובות

  • למה אנשים חושבים שמקצוע קריאת מחשבות הוא כל כך נפוץ? האם בכל פורום יש לפחות קורא מחשבות אחד שיודע לנחש למה התכוון המשורר ואיזה קוד הוא כתב ואיזה הודעת שגיאה מלאה נרשמה במערכת ההפעלה וכיצד נראית תמונת המסך של הודעת השגיאה שהאפליקציה זורקת?!?

    זו שאלה שתמיד אני תוהה בה :-)

    בכל פורום רושמים מנהלי הפורום ספר הוראות ל"כיצד לשאול שאלות" כאילו מישהו קורא את זה... אולי הגיע הזמן לקרוא?

    בכל מקרה זה ההסבר הרישמי הוא:

    StackOverflowException is the exception that thrown when the execution stack overflows because it contains too many nested method calls. This class cannot be inherited.

    כמובן שברמת האפליקציה ניתן לזרוק שגיאה זו גם בצורה מכוונת...

    * מכיוון שאין לנו קוד אני יכול להציע כמה פתרונות נפוצים לבעיה והסבר כללי בלבד בשלב זה. תבדוק אם זה עוזר לך לפתור את הבעיה או שעדין יש לך שאלות


    הסבר כללי: כאשר מבצעים לולאות מקוונות (Nested Loop) הריצה מתבצעת עד שממלאים את כל ה stack memory region.

    אפשרות אחת היא להימנע מלולאות בתוך לולאות (Nested Loop) ולהישתמש במקום זה בלולאה ישרה. בשימוש בלולאה ישרה הדבר אינו קורא מפני שנעשה שימוש בגודל קבוע על stack

    דרך אחרת להימנע מכך היא שימוש ב Exception Handling

    // http://en.wikipedia.org/wiki/Stack_trace
    // A stack trace allows to track the sequence of nested functions called up to the point where the stack trace is generated.
    
    // Display the Stack Trace: Environment.StackTrace
    // --------------------------------------------------
    Console.WriteLine("Environment.StackTrace.Length:"+Environment.StackTrace.Length);
    Console.WriteLine("StackTrace: \n{0}", Environment.StackTrace);



    signature
    שבת 26 נובמבר 2011 07:36
    מנחה דיון

כל התגובות

  • למה אנשים חושבים שמקצוע קריאת מחשבות הוא כל כך נפוץ? האם בכל פורום יש לפחות קורא מחשבות אחד שיודע לנחש למה התכוון המשורר ואיזה קוד הוא כתב ואיזה הודעת שגיאה מלאה נרשמה במערכת ההפעלה וכיצד נראית תמונת המסך של הודעת השגיאה שהאפליקציה זורקת?!?

    זו שאלה שתמיד אני תוהה בה :-)

    בכל פורום רושמים מנהלי הפורום ספר הוראות ל"כיצד לשאול שאלות" כאילו מישהו קורא את זה... אולי הגיע הזמן לקרוא?

    בכל מקרה זה ההסבר הרישמי הוא:

    StackOverflowException is the exception that thrown when the execution stack overflows because it contains too many nested method calls. This class cannot be inherited.

    כמובן שברמת האפליקציה ניתן לזרוק שגיאה זו גם בצורה מכוונת...

    * מכיוון שאין לנו קוד אני יכול להציע כמה פתרונות נפוצים לבעיה והסבר כללי בלבד בשלב זה. תבדוק אם זה עוזר לך לפתור את הבעיה או שעדין יש לך שאלות


    הסבר כללי: כאשר מבצעים לולאות מקוונות (Nested Loop) הריצה מתבצעת עד שממלאים את כל ה stack memory region.

    אפשרות אחת היא להימנע מלולאות בתוך לולאות (Nested Loop) ולהישתמש במקום זה בלולאה ישרה. בשימוש בלולאה ישרה הדבר אינו קורא מפני שנעשה שימוש בגודל קבוע על stack

    דרך אחרת להימנע מכך היא שימוש ב Exception Handling

    // http://en.wikipedia.org/wiki/Stack_trace
    // A stack trace allows to track the sequence of nested functions called up to the point where the stack trace is generated.
    
    // Display the Stack Trace: Environment.StackTrace
    // --------------------------------------------------
    Console.WriteLine("Environment.StackTrace.Length:"+Environment.StackTrace.Length);
    Console.WriteLine("StackTrace: \n{0}", Environment.StackTrace);



    signature
    שבת 26 נובמבר 2011 07:36
    מנחה דיון
  • ערב טוב ושבוע טוב braveeye

    שמתי לב עתה שיש לך כבר שאלות פתוחות שאתה שכחת לסגור או לבדוק את התגובות שקיבלת וחבל... אנשים משקיעים לעזור בהתנדבות והמינימום שמתבקש ממי ששואל זה לכבד את העזרה שהם מבקשים ומקבלים ולהגיע לבדוק את התגובות שהוא קיבל ולסגור שירשורים שפותחים. אני מקווה שתגיע לקרוא את התגובות לשאלה הנוכחית שלך ושלא ביזבזתי זמן בכתיבה שלה כמובן, ואנא סגור בהזדמנות זו גם את השירשור הבא שפתחת (ואם יש עוד שישורים כמובן):

    http://social.msdn.microsoft.com/Forums/he-IL/sqlhe/thread/e534ccc1-9b95-495d-90d5-398f6de61819

    תודה והמשך גלישה מהנה


    signature
    שבת 26 נובמבר 2011 15:02
    מנחה דיון