מחשביםתכנות

Java: חריגים והטיפול שלהם

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

מתי תזדקק טיפול בחריגים

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

טיפול חריגים Java

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

ב- Java, זה מוטל על ידי המהדר לתפוס חריג, ולכן הבעיות הטיפוסיות ידועות ויש לי דפוסי פעילות גופניים רגילים.

הכללות טיפוסיות

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

מנגנון Java ליירט שגיאת עיבוד נראה כך:

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

הדוגמא הפשוטה ביותר של יצירת שגיאה עשויה להיראות כך:

אם (א null ==)

לזרוק NullPointerException חדש ();

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

פרטים מעטים על מילות מפתח

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

  • נסה. מילת מפתח זה נפגש כבר, וזה פירושו מעבר לתוך קטע הקוד שיכול לזרוק חריגה. בלוק מוגבל מסולסלים {}.
  • תפוס. זה מיירט את סוג חריג הרצוי ולטפל בו כראוי.
  • לבסוף. מילת המפתח זה הוא אופציונלי והוא משמש לביצוע קטע מסוים של קוד, אשר נדרשת בכל מקרה, גם אם לא יוצא מן הכלל לא נתפס. נוסף ישירות לאחר בלוק try.
  • זרוק - מאפשר לך ליצור חריגים Java מכל מקום.
  • זורק - מילת מפתח ממוקם חתימת השיטה. זה אומר שהקוד הבא יכול לזרוק חריג מסוג זה Java. סימן זה משמש אות למפתחים שצריכים לזכור - השיטה לא יכולה לפעול כמצופה ממנו.

מדבק עם לנסות

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

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

הקוד הטיפוסי ביותר ליחידת העיבוד הוא כדלקמן:

try {

// הנה קוד שעשויה ליצור חריג

תפוס} (Tip_isklyucheniya_1 identifikator_1) {

// כאן יש טיפול בחריגים, בהתאם לסוג והתנאים שלה;

תפוס} (Tip_isklyucheniya_2 identifikator_2) {

// כאן יש טיפול בחריגים, בהתאם לסוג והתנאים שלה;

}

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

לבסוף

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

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

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

מילת המפתח לזרוק

לזרוק מייצר מצב חריג. התחביר שלה הוא כדלהלן:

לזרוק NewException חדש ();

יש נוצר חריג חדש לסוג NewException (). כסוג יכול לשמש כבר כלול כיתות ספריית Java הסטנדרטיות שהוגדר בעבר על ידי המפתחים של ייצור משלה.

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

מילות זורק

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

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

נסה משאבים

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

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

כיתות Own חריגים Java

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

הדרך הפשוטה ביותר ליצור - לרשת את המתאים ביותר להקשר האובייקט.

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

ואז, ב F השיטה מיושמת FullConstructors בכיתה הציבור, אשר מכיל את החתימה זורק MyException. מילת משמעות הדבר היא כי f יכול לזרוק כמו חריג Java MyException. בהמשך, בגוף שיטת הפיק פלט מידע טקסט הקונסולה עצמה ואת MyException הדור בפועל, על ידי זריקת.

השיטה השנייה היא שונה במקצת מזו הראשונה שכאשר אתה יוצר חריג, זה מועבר פרמטר של מחרוזת, אשר יבואו לידי ביטוי במסוף בתפיסה. בשינה הראשית ברור כי f () ו- g () ממוקם בדיקה לנסות מילה לתפוס מוגדר ללכוד MyException. התוצאה של העיבוד היא להציג הודעת שגיאה למסוף:

לכן זה בא להוסיף חריגים Java, במו ידיו.

חריגי אדריכלות

כמו עם כל האובייקטים ב- Java, חריגים גם עוברים בירושה יש מבנה היררכי. אלמנט השורש של כל השגיאות שנזרקו שפת תכנות הזאת הוא בכיתה java.lang.Throwable. בירושה ממנו שני סוגים - שגיאה חריגה.

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

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

לעתים קרובות יש יוצאים מן הכלל

בשנת חריגי Java, ברשימה אשר מוצגת להלן, משמש לרוב, אז אתה צריך לתאר כל אחד מהם בפירוט:

  • ArithmeticException. אלה כוללים שגיאות הקשורות פעולות חשבון. הדוגמא הכי הבולטת ביותר - החלוקה באפס.
  • ArrayIndexOutOfBoundsException - ערעור למספר אלמנט מערך העולה סך אורכו.
  • ArrayStoreException - ניסיון להקצות סוג אלמנט תואם של המערך.
  • ClassCastException - בניסיון להביא לסוג אחד טועה למשנהו.
  • IllegalArgumentException - באמצעות הטיעון השגוי בשיחת השיטה.
  • NegativeArraySizeException - חריג כאשר אתה יוצר מערך של גודל שלילי.
  • NullPointerException - ניצול לרעה של אזכור null.
  • NumberFormatException - מתרחש כאשר המרת מחרוזת טעות שלמה.
  • UnsupportedOperationException - הפעולה אינה נתמכת.

דוגמאות אלו מייצגות את סוגי חריגי Java מסומנים. אבל אז להסתכל בדק:

  • ClassNotFoundException - מחלקה לא נמצא.
  • IllegalAcccessException - להגביל את הגישה בכיתה.
  • InterruptedException - מהניתוק.
  • NoSuchFieldException - אין שדה נדרש.

הפרשנות של חריגים

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

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

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

ממצאים

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

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

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

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 iw.delachieve.com. Theme powered by WordPress.