בתכנות מחשבים, מה ההבדל בין הודעות אזהרה להודעות שגיאה?


תשובה 1:

הודעת שגיאה (מהדר) מציינת בעיה בטקסט התוכנית שהוא כה חמור שהוא מונע יצירת קוד שיכול להיות סביר למה שהתכנת התכוון.

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

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


תשובה 2:

אני מניח שאתה מדבר עליו במהלך ההילוך.

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

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

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

למשל המשפט

מחבת טוסטר שמן

פירושו כלום, ולא יעשה כלום ותשיג שגיאה, המשפט אינו משפט. למרות זאת

שופכים שמן בטוסטר

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

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


תשובה 3:

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