אז, אם אחרי מה שאני צריך לעשות אעשה (בfinally) גם throw זה כן יתפס בהנדלר?
eido
-
פעולת try/finally מפריע לcatch שמעליו או לא - nodejs -
פעולת try/finally מפריע לcatch שמעליו או לא - nodejsבהמשך לנאמר כאן לגבי ספרית yemot router (nodejs)
הid_list_message בלי פרמטר prepend to next זורק שגיאה
אם אתה לא עושה עליה try catch אז הפונקציה נעצרת והשגיאה מטופלת על ידי הראוטר
אם אתה עושה try catch ולא בודק את סוג השגיאה, זה בעיה
בכללי אין סיבה בדוגמאות שהבאת לעשות try catch כי יש הנדלר גלובלי לשגיאות לא צפויות
אם היה לך נניח קוד שמנסה API אחד ואם הוא נכשל מנסה אחר, זה היה הגיוני, אבל רק מסביב הקוד הספציפי הזה ולא לעטוף את כל הקוד
שזה בעצם אומר שיש try catch מובנים שתופסים את כל השגיאות, אם לא מפריעים להם עם try catch משלנו, האם גם try finally מפריע? האם הcatch הוא זה שתופס את השגיאות וכל עוד הוא לא שם הקוד בטוח, או שעצם הבלוק try תופס שגיאות רק שכיוון שאין catch הוא לא מנתב אותם ולא עושה איתם כלום.
חיפשתי עד כמה שהצלחתי איך עובדות שגיאות בjava script ולא מצאתי מענה על זה, כולם מתעלמים (בצדק לדעתי) מנקודה זו.
אשמח לעזרה בנושא.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@dovid @יהודי-טוב @ששא אשמח לעזרה
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים לא מצאתי משהו מיוחד בנידון, רק שjs לוקה בחסר בכל ענין השגיאות.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה? -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים גם אם אני עושה רק try/finally זה יתנגש עם ההנדלר הזה?
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים תוכל רגע לענות לי, אני רוצה להבין דבר יסודי בספריה, האם הid_list_message עוצר את הריצה או לא? ואם כן, למה זה ממשיך לרוץ?
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים אבל יש שגיאה, ואם אחצא כרגיל זה עלול להסתבך כמו שקרה בקוד שלי.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים לא הבנתי איך אני אמור לטפל בשגיאה? נניח ואני רוצה לתפוס שגיאה ולהחזיר בשבילה למאזין פלט ספציפי, איך עושים את זה? הרי אח"כ הקוד ימשיך לרוץ כי הid_list_message לא עוצר את הריצה.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?לא יודע לא מצליח לי
https://drive.google.com/file/d/1TEiEr9******0dx2YkX5-hNkouUyecCmU9Voaz/view -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:
יש אפילו אחד מובנה ב VSC, זה דרך המלך
שלו
ניסיתי עכשיו לדבאג דרך הvsc ולא הוא לא נותן שום נתון -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים נו, תשתף אותי מה שמו.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים איך אפשר לדבאג קוד שאמור לרוץ על שרת?
הוא הרי אמור לקבל בקשות, לא? -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים אז אני יכול למחוק את כל הtry/catch מהפרוייקט?
-
מחפש בונה ממשק ווב שיתממשק עם מערכת קיימתבשביל לקוח, בניתי את כל הליבה של הצד שרת + ממשק טלפוני, צריך מישהו שיבנה GUI למנהל המערכת.
במייל stamandsefer של ג'ימייל.כרגע כבר לא רלוונטי.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?כולם התאדו לי כאן באמצע המתח
מחקתי את הtry/catch ובאמת הוא זורק שגיאה אבל לא קורס!
זה גם לא מצב אופטימלי לדעתי, אבל לפחות לא קורס... -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?אהה כנראה שהוא ניתק והשרת של ימות המשיח פשוט שלח &ApiHangupExtension=1/1/1/1/1&hangup=yes& ואז הcatch תפס את השגיאה והודיע על שגיאה למרות שהוא כבר ניתק וזה מה שגרם לאפליקציה לקרוס.
לקחתי את הurl של השגיאה, בלי הסוף (החלק של הניתוק) והרצתי בpostman ולא קרה כלום, רק אחרי שהוספתי את החלק של הניתוק פתאום הוא קרס פעם אחר פעם.
מה אומר @צדיק-תמים יכול להיות?
ומה הפתרון?
@צדיק-תמים @dovid אתם בעצם מציעים להוריד לגמרי את הtry/catch? -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@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 - ואילו השאר לא הקריסו.
ואני גם לא רואה פתרון כאן... בגלל שהשגיאה נמצאת בתוך פונקציה, וגם אם אעצור אותה היא תחזור לפונקציה שקראה לה ושם היא תמשיך.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@dovid למה? סיכמנו שהid וכו מודיע הודעה למאיזן ויוצא מהשלוחה, מה יותר אלגנטי מזה?
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:
@dovid הכי טוב היה בלי try בלבד חוץ מנקודתי בשורה שרוצים לטפל בשגיאות שלה בצורה שונה
יש לספריה קאלבק מיוחד כדי לטפל בשגיאות לא צפויות בצורה מרוכזת במקום לפזר בקוד try catchאהה חזק, עכשיו הבנתי מה התכוונת.
אבל זה תופס את כל החריגות?
איך זה עובד?
