ב-JAVA קיים מנגנון של טיפול שגיאות ובעיות בזמן אמת, דוגמאות טובות לשגיאות בזמן ריצת התוכנית:- כשלון בהקצאת זכרון
- כשלון בעית קלט (כמו קלט לא תקין, או שקובץ לא נמצא)
- שגיאה מתמטית (חלוקה ב-0 וכ'ו)
- חריגה מגבולות מערך
ישנם 2 סוגי חריגות עיקריים המיוצגים ע"י 2 מחלקות:
Error - שגיאה שלא ניתנת לטיפול בזמן אמת, בדרך כלל אחרי דבר כזה התוכנית נסגרת.
Exception - חריגה שאפשר לטפל בזמן אמת, לא מצריכה לסגור תוכנית.
להלן מחלקות (סוגי בעיות) של Error:
| שם הבעיה |
מדוע זה קורה? |
| OutOfMemoryError |
כשלון בהקצאת זכרון. |
| InternalError |
שגיאה פנימית. |
ולהלן מחלקות (סוגי בעיות) של Exception:
| שם הבעיה |
מדוע זה קורה? |
| IOException |
חריגה קלט/פלט כללית. |
| FileNotFoundException |
"קובץ לא נמצא" יורש מ-IOException. |
| ArrayIndexOutOfBoundsException |
חריגה מגבולות המערך. |
| Exception |
כל סוג חריגה אחרת. |
איך משתמשים בזה?
נגיד, שהגדרנו scanner שקולט מספר ואנחנו רוצים לעשות שהוא יקבל מספר ויוסיף לו אחד(לדוגמא)
אבל איך נעשה שזה יקבל רק מספרים?
בשביל זה נכתוב את הקוד הבא:
קוד:
import java.util.*;;
public class Test {
public static void main(String args[]){
System.out.print("Enter a number: ");
Scanner scann = new Scanner(System.in);
try{
int num = scann.nextInt();
int result = num + 1;
System.out.println(num + " + 1 = " + result);
}
catch(Exception e){
System.out.println("Please enter a number!");
}
}
}
אז מה עשינו?
בוא נעבור שלב, שלב ונבדוק:
מייבא את הספרייה שאיתה נשתמש ב-Scanner(הקלט).
public class Test {
public static void main(String args[]){
אין צורך להסביר נכון?
System.out.print("Enter a number: ");
ידפיס לנו על המסך:
Scanner scann = new Scanner(System.in);
יוצר Scanner חדש שאיתו נקבל את הקלט.
פה מתחיל הקטע שלנו, כל משהו שיכול להיות איתו חריגה צריך לשים בלולאת try, שכמו בשמה "לנסות".
כלומר, אם יש חלק שיכול להיות איתו בעיה, לשים בלולאת try.
int num = scann.nextInt(); int result = num + 1;
System.out.println(num + " + 1 = " + result);}
קולט מספר בעזרת Scanner, שומר במשתנה result את המספר שקיבלנו ועוד אחד, ומדפיס את זה.
אבל מה יקרה אם נרשום אות ולא מספר?
זה ירשום לנו "Please enter a number!", למה? הכל בגלל שתי השורות הבאות 
catch(Exception e){
System.out.println("Please enter a number!");
פה מתחיל הדבר ה"כיף"! 
נכון הגדרנו לולאת try? אז בדיוק שהיא הסתיימה פתחנו לולאת catch, שאומרת שבמקרה של חריגה מה לעשות.
ובתוך הסוגריים בגדרנו את סוג החריגה(פסטט זוכרים את הטבלאות שמגדירות את החריגות מקודם?)
ונתנו לחריגה שם "e" כדי שנוכל לקרוא לה.
ואז הגדרנו שבמקרה של חריגה זה יכתוב "Please enter a number!"
לסגור את מה שפתחנו, וזהו 
אם יש לכם שאלות, בקשות או כל דבר אחר אתם מוזמנים להכנס לפורום
שפות עיליות וASM
.