הבדל מפתח – חריגה מסומנת לעומת לא מסומנת ב-Java
חריג הוא שגיאת זמן ריצה. ישנם שני סוגים של חריגים המכונים חריגים מסומנים ובלתי מסומנים. כאשר מתרחש חריג מסומן, אפליקציית Java מחוברת למשאב חיצוני כגון קובץ, מכשיר או מסד נתונים. חריגים אלה נבדקים על ידי המהדר. כמה דוגמאות לחריגים מסומנים הם חריג IO וחריג FileNotFound. כאשר מתרחש חריג לא מסומן, היישום אינו מחובר לשום משאב חיצוני. חריגים אלה אינם נבדקים על ידי המהדר. כמה דוגמאות לחריגים לא מסומנים הם אריתמטית חריגה וחריג ArrayOutOfBound.מאמר זה דן בהבדל בין חריג מסומן לבלתי מסומן ב-Java. ההבדל העיקרי בין חריג מסומן לבלתי מסומן ב-Java הוא שחריג מסומן נבדק על ידי המהדר בעוד חריג לא מסומן לא נבדק על ידי המהדר.
מה זה חריג מסומן ב-Java?
כאשר מתרחש חריג מסומן, יישום Java מחובר למשאב חיצוני. משאב זה יכול להיות התקן כגון מדפסת. זה יכול להיות קובץ או מסד נתונים. לכן, החריגים הללו נבדקים על ידי המהדר. חריג IO הוא חריג מסומן. זה מתרחש עקב שגיאה במכשיר. כאשר היישום ניגש לקובץ שאינו קיים, הוא יגרום לחריגה של FileNotFound. ניתן לחבר אפליקציה למסד נתונים כגון MySQL, Oracle וכו' כדי לאחסן נתונים. אם התרחשה שגיאה הקשורה למסד נתונים, זו תהיה חריגה של SQL. אלו הן כמה דוגמאות לחריגים מסומנים. בכל אלה, האפליקציה מחוברת למשאב חיצוני.בחריגים מסומנים, חובה לטפל בחריג. אם זה לא יטופל, הזרימה הנכונה של התוכנית תופסק, וקובץ הכיתה לא ייווצר. ניתן לטפל בשגיאה באמצעות חסימת try, catch.
איור 01: טיפול בחריג מסומן
לפי האמור לעיל, ה-FileReader קרא נתונים מהקובץ. קובץ text1.txt אינו קיים במיקום שצוין. הקוד שיכול לתת את החריגה ממוקם בתוך בלוק try. ההודעה להדפסה נמצאת בתוך גוש ה-catch. מכיוון שאין קובץ בשם text1.txt, הדבר גורם לקובץ FileNotFoundException. באמצעות טיפול חריג, ההודעה מודפסת למסך.
מה זה חריגים לא מסומנים ב-Java?
חריגים לא מסומנים אינם נבדקים על ידי המהדר.שלא כמו בחריגים מסומנים, עם חריגים לא מסומנים, אפליקציית Java אינה מחוברת למשאב חיצוני כגון קובץ, מסד נתונים או מכשיר. כמה חריגים נפוצים שאינם מסומנים הם Arithmetic, ArrayOutOfBound ו-NullPointer Exceptions.
int a=10, b=0;
int div=a/b;
System.out.println(div);
זה יגרום לחריגה אריתמטית בגלל צלילה של 'a' באפס. עיין בקוד שלהלן.
איור 02: טיפול בחריגים אריתמטיים
לפי התוכנית לעיל, משתנה a הוא ערך שלם. משתנה b הוא 0. החלוקה של שני המספרים הללו היא חלוקה באפס. לכן, זה יגרום לחריגה אריתמטית. ניתן לטפל בו באמצעות בלוק טרי-catch.ההצהרות שיכולות לגרום לחריגה ממוקמות בתוך בלוק try. ההודעה שתוצג נמצאת בגוש ה-catch.
עיין בקטע שלמטה בקוד.
int array1={1, 2, 3, 4, 5};
System.out.println(array1[5]);
זה יגרום לחריגה. המערך1 הוא מערך עם 5 אלמנטים. אינדקס ההתחלה של המערך הוא אפס. הדפסת ערך האינדקס 5th גורמת לחריגה מכיוון שהוא מחוץ לתחום. האינדקס המרבי של מערך1 הוא 4.
איור 03: טיפול בחריגים ב-ArrayOutOfBound
לפי התוכנית לעיל, למערך1 יש 5 אלמנטים. הדפסת האלמנט עם אינדקס 6 תגרום לחריגה מכיוון שהוא מחוץ לתחום. האינדקס המרבי שניתן לאחסן במערך 1 הוא 5. הודעת השגיאה מודפסת על ידי ביצוע בלוק ה-catch.
מהו הדמיון בין חריג מסומן לבלתי מסומן ב-Java
חריגים מסומנים וגם לא מסומנים ב-Java הם סוגי חריגים ב-Java
מה ההבדל בין חריגה מסומנת לבלתי מסומנת ב-Java?
חריגה מסומנת לעומת לא מסומנת ב-Java |
|
חריג מסומן הוא שגיאת זמן ריצה שנבדקת על ידי המהדר. | חריג לא מסומן הוא שגיאת זמן ריצה שלא נבדקת על ידי המהדר. |
התרחשות | |
כאשר מתרחש חריג מסומן, אפליקציית Java מחוברת למשאב חיצוני כגון קובץ, מכשיר או מסד נתונים. | כאשר מתרחש חריג לא מסומן, יישום Java אינו מחובר למשאב חיצוני. |
דוגמאות | |
IOException, FileNotFoundException, SQLException הם כמה דוגמאות לחריגים מסומנים. | החריג האריתמטי, ArrayOutOfBoundException, NullPointerException הם כמה דוגמאות לחריגים לא מסומנים. |
סיכום – חריגה מסומנת לעומת לא מסומנת ב-Java
חריג הוא אירוע שמפריע לביצוע זרימת התוכנית. ישנם שני סוגים של חריגים. הם נקראים חריגים מסומנים וחריגים לא מסומנים. מאמר זה דן בהבדל בין חריג מסומן לחריגים לא מסומנים. ההבדל בין חריג מסומן לבלתי מסומן ב-Java הוא שחריג מסומן נבדק על ידי המהדר בעוד חריג לא מסומן לא נבדק על ידי המהדר. מכיוון שהחריגים משפיעים על הזרימה הנכונה של ביצוע התוכנית, זוהי תרגול תכנות טוב לטפל בהם.