שלושה סוגים של חריגים בג'אווה

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

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

היוצא מן הכלל

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

לקחת דוגמה זו צעד אחד קדימה. נניח שאנו משתמשים ב-

instagram viewer
FileReader בכיתה לקרוא קובץ תו. אם אתה מסתכל על הגדרת בנאי FileReader ב- api Java תראה חתימת שיטה זו:

FileReader ציבורי (שם קובץ מחרוזת) זורק את FileNotFoundException.

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

main static void main (מחרוזת [] args) { FileReader fileInput = null; // פתח את קובץ הקלט. fileInput = חדש FileReader ("Untitled.txt"); }

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

main static void main (מחרוזת [] args) זורק את FileNotFoundException { FileReader fileInput = null; // פתח את קובץ הקלט. fileInput = חדש FileReader ("Untitled.txt"); }

או שאנחנו באמת יכולים להתמודד עם החריג:

main static void main (מחרוזת [] args) { FileReader fileInput = null; נסה. { // פתח את קובץ הקלט. fileInput = חדש FileReader ("Untitled.txt"); } לתפוס (FileNotFoundException ex) { // אמר למשתמש ללכת לחפש את הקובץ. } }

יישומי Java כתובים היטב אמורים להיות מסוגלים להתמודד עם חריגים שנבדקו.

שגיאות

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

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

חריגים בזמן ריצה

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

שגיאות ויוצאי דופן הם נכללים בקטגוריית חריגים שלא נבדקו.

instagram story viewer