דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?

לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?

מתוזמן נעוץ נעול הועבר תכנות
41 פוסטים 5 כותבים 232 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • E מנותק
    E מנותק
    eido
    כתב נערך לאחרונה על ידי
    #18

    אהה כנראה שהוא ניתק והשרת של ימות המשיח פשוט שלח &ApiHangupExtension=1/1/1/1/1&hangup=yes& ואז הcatch תפס את השגיאה והודיע על שגיאה למרות שהוא כבר ניתק וזה מה שגרם לאפליקציה לקרוס.
    לקחתי את הurl של השגיאה, בלי הסוף (החלק של הניתוק) והרצתי בpostman ולא קרה כלום, רק אחרי שהוספתי את החלק של הניתוק פתאום הוא קרס פעם אחר פעם.
    מה אומר @צדיק-תמים יכול להיות?
    ומה הפתרון?
    @צדיק-תמים @dovid אתם בעצם מציעים להוריד לגמרי את הtry/catch?

    תגובה 1 תגובה אחרונה
    0
    • E מנותק
      E מנותק
      eido
      כתב נערך לאחרונה על ידי
      #19

      כולם התאדו לי כאן באמצע המתח

      מחקתי את הtry/catch ובאמת הוא זורק שגיאה אבל לא קורס!
      זה גם לא מצב אופטימלי לדעתי, אבל לפחות לא קורס...

      תגובה 1 תגובה אחרונה
      0
      • יהודי טובי יהודי טוב

        @eido כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

        הtry/catch הארוך הוא כי עשיתי שינוי על שינוי לטובת הלקוח. אז נשאר כזה ארוך, סתם להבין מה רע בזה?

        1 - בגדול זה שזה ארוך זה לא ממקד אותך בבעיה
        2 - הוא כתב שעדיף בלי, כי אם אתה לא מטפל בשגיאה אז זה נזרק הלאה ויש לו בספריה טיפול בשגיאות.
        אז אתה יכול לטפל שם בשגיאות..

        צדיק תמיםצ מנותק
        צדיק תמיםצ מנותק
        צדיק תמים
        כתב נערך לאחרונה על ידי צדיק תמים
        #20

        @יהודי-טוב כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

        2 - הוא כתב שעדיף בלי, כי אם אתה לא מטפל בשגיאה אז זה נזרק הלאה ויש לו בספריה טיפול בשגיאות.

        יותר מזה, ברגע שהוא עושה try catch על הכל הוא "בולע" את השגיאה שנועדה להשמיד את הסקופ של הפונקציה, וממילא הקוד שלו חשוף לבאג כזה שהוא מנסה להחזיר תשובה פעמיים
        ואם תאמר - מה אם תהיה שגיאה לא צפויה? אז בשביל זה יש את הקאלבק הגלובלי כדי שהאפליקציה לא תקרוס, המשתמש יקבל תשובה, ואם תרצה תוכל גם לשלוח לעצמך מייל על השגיאה וכדומה...

        Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
        טיפים

        E תגובה 1 תגובה אחרונה
        0
        • E eido

          @dovid אני מתחיל לחשוב שהid_list_message לא סוגר באמת את החיבור.
          כי כל הלוגים מראים בעיה בשורה 7 בקוד הראשון:

          while(okStreet!="1")
              {
          ->        let ans = await call.read([{ type: 'file', data: "/ivr_records/רחוב1" }], "record");
          

          ואז בעצם קורה כדלהלן (כך אני משער):
          הtry בreco תופס שגיאה לא ברורה - אני לא מצליח למצוא שום בדל מידע מה השגיאה, נכנס לcatch משאיר לוג ארוך ולא כ"כ מועיל (מה שכן דליתי ממנו זה:

          Error: HangupError: the call was hangup by the caller
              at EventEmitter.<anonymous> 
          

          ושמשום מה התווסף לurl

          &ApiHangupExtension=1/1/1/1/1&hangup=yes&
          

          )
          מפעיל את

          call.id_list_message([{ type: 'text', data: "אירעה שגיאה" }]);
          

          שלכאורה אמור לסיים את הקוד (ככה אני מבין מהתיעוד)

          this.send(this.#responsesTextQueue.pull() + responseTxt + '&');
                      throw new ExitError(this, {
                          target: goToFolderMessageIndex !== -1 ? messages[goToFolderMessageIndex].data : `parent of /${this.extension}`,
                          caller: goToFolderMessageIndex !== -1 ? 'go_to_folder' : 'id_list_message'
                      });
          

          אבל במקום זה חוזר בחזרה לchooseStreet שקראה לו, בלי להחזיר ערך לstreet, ככה שהוא null.
          הוא מגיע לשורה הזו:

          if (street==null) {continue;}
          

          ומתחיל את הלולאה מחדש.
          ואז מגיע שוב לשורה:

          while(okStreet!="1")
              {
          ->        let ans = await call.read([{ type: 'file', data: "/ivr_records/רחוב1" }], "record");
          

          ופה זורק שגיאה שא"א לשלוח עוד פעם הודעה למאזין.

          ככה אני מניח.

          אבל זה לא מסביר לי למה רק השגיאה השלישית הקריסה את האפליקציה - עובדה שאחריה כתוב node is starting - ואילו השאר לא הקריסו.

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

          צדיק תמיםצ מנותק
          צדיק תמיםצ מנותק
          צדיק תמים
          כתב נערך לאחרונה על ידי צדיק תמים
          #21

          @eido כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

          אבל במקום זה חוזר בחזרה לchooseStreet שקראה לו, בלי להחזיר ערך לstreet, ככה שהוא null.
          הוא מגיע לשורה הזו:

          ומתחיל את הלולאה מחדש.
          ואז מגיע שוב לשורה:

          ופה זורק שגיאה שא"א לשלוח עוד פעם הודעה למאזין.

          ככה אני מניח.

          במקום לנחש תלמד להשתמש בדיבאגר של VSC ולראות את הזרימה של הקוד "בעיניים"
          תחסוך לעצמך המון כאב ראש עתידי

          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
          טיפים

          E תגובה 1 תגובה אחרונה
          2
          • צדיק תמיםצ צדיק תמים

            @יהודי-טוב כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

            2 - הוא כתב שעדיף בלי, כי אם אתה לא מטפל בשגיאה אז זה נזרק הלאה ויש לו בספריה טיפול בשגיאות.

            יותר מזה, ברגע שהוא עושה try catch על הכל הוא "בולע" את השגיאה שנועדה להשמיד את הסקופ של הפונקציה, וממילא הקוד שלו חשוף לבאג כזה שהוא מנסה להחזיר תשובה פעמיים
            ואם תאמר - מה אם תהיה שגיאה לא צפויה? אז בשביל זה יש את הקאלבק הגלובלי כדי שהאפליקציה לא תקרוס, המשתמש יקבל תשובה, ואם תרצה תוכל גם לשלוח לעצמך מייל על השגיאה וכדומה...

            E מנותק
            E מנותק
            eido
            כתב נערך לאחרונה על ידי
            #22

            @צדיק-תמים אז אני יכול למחוק את כל הtry/catch מהפרוייקט?

            תגובה 1 תגובה אחרונה
            0
            • E eido

              @צדיק-תמים כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

              @dovid הכי טוב היה בלי try בלבד חוץ מנקודתי בשורה שרוצים לטפל בשגיאות שלה בצורה שונה
              יש לספריה קאלבק מיוחד כדי לטפל בשגיאות לא צפויות בצורה מרוכזת במקום לפזר בקוד try catch

              אהה חזק, עכשיו הבנתי מה התכוונת.
              אבל זה תופס את כל החריגות?
              איך זה עובד?

              צדיק תמיםצ מנותק
              צדיק תמיםצ מנותק
              צדיק תמים
              כתב נערך לאחרונה על ידי
              #23

              @eido כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

              אבל זה תופס את כל החריגות?

              כל החריגות שלא נתפסו קודם - uncaughtErrorHandler

              איך זה עובד?

              כיוון שכל הפונקציה של השיחה זה בעצם פונקציה אסינכרונית שהראוטר (הספריה) מריץ, אז הראוטר מריץ אותה בתוך try catch כדי שיהיה אפשר לטפל בצורה נאותה בשגיאות לא צפויות, נניח אם יש לך בקוד נסיון קריאה ל API חיצוני שלא זמין

              Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
              טיפים

              תגובה 1 תגובה אחרונה
              1
              • צדיק תמיםצ צדיק תמים

                @eido כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

                אבל במקום זה חוזר בחזרה לchooseStreet שקראה לו, בלי להחזיר ערך לstreet, ככה שהוא null.
                הוא מגיע לשורה הזו:

                ומתחיל את הלולאה מחדש.
                ואז מגיע שוב לשורה:

                ופה זורק שגיאה שא"א לשלוח עוד פעם הודעה למאזין.

                ככה אני מניח.

                במקום לנחש תלמד להשתמש בדיבאגר של VSC ולראות את הזרימה של הקוד "בעיניים"
                תחסוך לעצמך המון כאב ראש עתידי

                E מנותק
                E מנותק
                eido
                כתב נערך לאחרונה על ידי eido
                #24

                @צדיק-תמים איך אפשר לדבאג קוד שאמור לרוץ על שרת?
                הוא הרי אמור לקבל בקשות, לא?

                צדיק תמיםצ תגובה 1 תגובה אחרונה
                0
                • E eido

                  @צדיק-תמים איך אפשר לדבאג קוד שאמור לרוץ על שרת?
                  הוא הרי אמור לקבל בקשות, לא?

                  צדיק תמיםצ מנותק
                  צדיק תמיםצ מנותק
                  צדיק תמים
                  כתב נערך לאחרונה על ידי צדיק תמים
                  #25

                  @eido אתה יכול לדבג ישירות על השרת עם Remote SSH (תוסף של מייקרוסופט ל VSC)
                  אבל אתה אמור להיות מסוגל להגיש את הפיתוח המקומי שלך החוצה ולדבג מקומית מול בקשות שמגיעות מימות, יש כל מיני כלים שמאפשרים להנגיש שירות לוקאלי החוצה - יש אפילו אחד מובנה ב VSC, זה דרך המלך

                  Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                  טיפים

                  E 2 תגובות תגובה אחרונה
                  0
                  • צדיק תמיםצ צדיק תמים

                    @eido אתה יכול לדבג ישירות על השרת עם Remote SSH (תוסף של מייקרוסופט ל VSC)
                    אבל אתה אמור להיות מסוגל להגיש את הפיתוח המקומי שלך החוצה ולדבג מקומית מול בקשות שמגיעות מימות, יש כל מיני כלים שמאפשרים להנגיש שירות לוקאלי החוצה - יש אפילו אחד מובנה ב VSC, זה דרך המלך

                    E מנותק
                    E מנותק
                    eido
                    כתב נערך לאחרונה על ידי
                    #26

                    @צדיק-תמים נו, תשתף אותי מה שמו.

                    צדיק תמיםצ תגובה 1 תגובה אחרונה
                    0
                    • E eido

                      @צדיק-תמים נו, תשתף אותי מה שמו.

                      צדיק תמיםצ מנותק
                      צדיק תמיםצ מנותק
                      צדיק תמים
                      כתב נערך לאחרונה על ידי
                      #27

                      @eido של מי?

                      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                      טיפים

                      תגובה 1 תגובה אחרונה
                      0
                      • צדיק תמיםצ צדיק תמים

                        @eido אתה יכול לדבג ישירות על השרת עם Remote SSH (תוסף של מייקרוסופט ל VSC)
                        אבל אתה אמור להיות מסוגל להגיש את הפיתוח המקומי שלך החוצה ולדבג מקומית מול בקשות שמגיעות מימות, יש כל מיני כלים שמאפשרים להנגיש שירות לוקאלי החוצה - יש אפילו אחד מובנה ב VSC, זה דרך המלך

                        E מנותק
                        E מנותק
                        eido
                        כתב נערך לאחרונה על ידי
                        #28

                        @צדיק-תמים כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

                        יש אפילו אחד מובנה ב VSC, זה דרך המלך

                        שלו
                        ניסיתי עכשיו לדבאג דרך הvsc ולא הוא לא נותן שום נתון

                        צדיק תמיםצ תגובה 1 תגובה אחרונה
                        0
                        • E eido

                          @צדיק-תמים כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

                          יש אפילו אחד מובנה ב VSC, זה דרך המלך

                          שלו
                          ניסיתי עכשיו לדבאג דרך הvsc ולא הוא לא נותן שום נתון

                          צדיק תמיםצ מנותק
                          צדיק תמיםצ מנותק
                          צדיק תמים
                          כתב נערך לאחרונה על ידי צדיק תמים
                          #29

                          @eido יש לך בפאנל התחתון (של הטרמינל) לשונית Ports
                          https://code.visualstudio.com/docs/debugtest/port-forwarding
                          שים לב שזה לא על Private
                          אבל ngrok משמעותית יותר מהיר נכון לפעם אחרונה שבדקתי

                          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                          טיפים

                          תגובה 1 תגובה אחרונה
                          0
                          • E מנותק
                            E מנותק
                            eido
                            כתב נערך לאחרונה על ידי
                            #30

                            לא יודע לא מצליח לי
                            https://drive.google.com/file/d/1TEiEr9******0dx2YkX5-hNkouUyecCmU9Voaz/view

                            תגובה 1 תגובה אחרונה
                            0
                            • E מנותק
                              E מנותק
                              eido
                              כתב נערך לאחרונה על ידי
                              #31

                              @צדיק-תמים לא הבנתי איך אני אמור לטפל בשגיאה? נניח ואני רוצה לתפוס שגיאה ולהחזיר בשבילה למאזין פלט ספציפי, איך עושים את זה? הרי אח"כ הקוד ימשיך לרוץ כי הid_list_message לא עוצר את הריצה.

                              צדיק תמיםצ תגובה 1 תגובה אחרונה
                              0
                              • E eido

                                @צדיק-תמים לא הבנתי איך אני אמור לטפל בשגיאה? נניח ואני רוצה לתפוס שגיאה ולהחזיר בשבילה למאזין פלט ספציפי, איך עושים את זה? הרי אח"כ הקוד ימשיך לרוץ כי הid_list_message לא עוצר את הריצה.

                                צדיק תמיםצ מנותק
                                צדיק תמיםצ מנותק
                                צדיק תמים
                                כתב נערך לאחרונה על ידי
                                #32

                                @eido אתה יכול לצאת מהפונקציה כמו מכל פונקציה
                                return

                                Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                                טיפים

                                E 2 תגובות תגובה אחרונה
                                0
                                • צדיק תמיםצ צדיק תמים

                                  @eido אתה יכול לצאת מהפונקציה כמו מכל פונקציה
                                  return

                                  E מנותק
                                  E מנותק
                                  eido
                                  כתב נערך לאחרונה על ידי
                                  #33

                                  @צדיק-תמים אבל יש שגיאה, ואם אחצא כרגיל זה עלול להסתבך כמו שקרה בקוד שלי.

                                  תגובה 1 תגובה אחרונה
                                  0
                                  • צדיק תמיםצ צדיק תמים

                                    @eido אתה יכול לצאת מהפונקציה כמו מכל פונקציה
                                    return

                                    E מנותק
                                    E מנותק
                                    eido
                                    כתב נערך לאחרונה על ידי
                                    #34

                                    @צדיק-תמים תוכל רגע לענות לי, אני רוצה להבין דבר יסודי בספריה, האם הid_list_message עוצר את הריצה או לא? ואם כן, למה זה ממשיך לרוץ?

                                    צדיק תמיםצ תגובה 1 תגובה אחרונה
                                    0
                                    • E eido

                                      @צדיק-תמים תוכל רגע לענות לי, אני רוצה להבין דבר יסודי בספריה, האם הid_list_message עוצר את הריצה או לא? ואם כן, למה זה ממשיך לרוץ?

                                      צדיק תמיםצ מנותק
                                      צדיק תמיםצ מנותק
                                      צדיק תמים
                                      כתב נערך לאחרונה על ידי צדיק תמים
                                      #35

                                      @eido הid_list_message בלי פרמטר prepend to next זורק שגיאה
                                      אם אתה לא עושה עליה try catch אז הפונקציה נעצרת והשגיאה מטופלת על ידי הראוטר
                                      אם אתה עושה try catch ולא בודק את סוג השגיאה, זה בעיה

                                      בכללי אין סיבה בדוגמאות שהבאת לעשות try catch כי יש הנדלר גלובלי לשגיאות לא צפויות
                                      אם היה לך נניח קוד שמנסה API אחד ואם הוא נכשל מנסה אחר, זה היה הגיוני, אבל רק מסביב הקוד הספציפי הזה ולא לעטוף את כל הקוד

                                      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                                      טיפים

                                      E תגובה 1 תגובה אחרונה
                                      1
                                      • צדיק תמיםצ צדיק תמים

                                        @eido הid_list_message בלי פרמטר prepend to next זורק שגיאה
                                        אם אתה לא עושה עליה try catch אז הפונקציה נעצרת והשגיאה מטופלת על ידי הראוטר
                                        אם אתה עושה try catch ולא בודק את סוג השגיאה, זה בעיה

                                        בכללי אין סיבה בדוגמאות שהבאת לעשות try catch כי יש הנדלר גלובלי לשגיאות לא צפויות
                                        אם היה לך נניח קוד שמנסה API אחד ואם הוא נכשל מנסה אחר, זה היה הגיוני, אבל רק מסביב הקוד הספציפי הזה ולא לעטוף את כל הקוד

                                        E מנותק
                                        E מנותק
                                        eido
                                        כתב נערך לאחרונה על ידי
                                        #36

                                        @צדיק-תמים גם אם אני עושה רק try/finally זה יתנגש עם ההנדלר הזה?

                                        צדיק תמיםצ תגובה 1 תגובה אחרונה
                                        0
                                        • E eido

                                          @צדיק-תמים גם אם אני עושה רק try/finally זה יתנגש עם ההנדלר הזה?

                                          צדיק תמיםצ מנותק
                                          צדיק תמיםצ מנותק
                                          צדיק תמים
                                          כתב נערך לאחרונה על ידי
                                          #37

                                          @eido תקרא איך עובדות שגיאות ב JavaScript

                                          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                                          טיפים

                                          E 2 תגובות תגובה אחרונה
                                          0
                                          תגובה
                                          • תגובה כנושא
                                          התחברו כדי לפרסם תגובה
                                          • מהישן לחדש
                                          • מהחדש לישן
                                          • הכי הרבה הצבעות


                                          • 1
                                          • 2
                                          • 3
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום