מדריך ל- System.exit ()

1. סקירה כללית

במדריך זה נבחן מה System.exit פירושו בג'אווה.

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

2. מה זה System.exit?

System.exit הוא בָּטֵל שיטה. זה לוקח קוד יציאה, שהוא מעביר לתסריט הקריאה או לתוכנית.

יציאה עם קוד של אפס פירושו יציאה רגילה:

System.exit (0);

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

קורא ל System.exit השיטה מסיימת את ה- JVM הפועל כעת ויוצא מהתוכנית. שיטה זו אינה חוזרת כרגיל.

זה אומר ש הקוד שלאחר מכן System.exit למעשה אינו ניתן להשגהועדיין, המהדר אינו יודע על כך.

System.exit (0); System.out.println ("קו זה אינו ניתן להשגה");

זה לא רעיון טוב לסגור תוכנית System.exit (0). זה נותן לנו את אותה תוצאה של יציאה מה- רָאשִׁי שיטה וגם מפסיק לבצע את השורות הבאות, גם החוט הקורא System.exit חוסם עד לסיום ה- JVM. אם וו כיבוי מגיש משימה לשרשור זה, זה מוביל למבוי סתום.

3. למה אנחנו צריכים את זה?

מקרה השימוש האופייני ל- System.exit זה כאשר יש מצב לא תקין ואנחנו צריכים לצאת מהתוכנית באופן מיידי.

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

4. מתי אנחנו צריכים את זה?

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

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

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

5. דוגמה פשוטה

בדוגמה זו, אנו מנסים לקרוא קובץ ואם הוא קיים, אנו מדפיסים ממנו שורה. אם הקובץ לא קיים, אנו יוצאים עם התוכנית System.exit מגוש התפיסה.

נסה את {BufferedReader br = BufferedReader חדש (FileReader חדש ("file.txt")); System.out.println (br.readLine ()); br.close (); } לתפוס (IOException e) {System.exit (2); } לבסוף {System.out.println ("יציאה מהתוכנית"); }

כאן עלינו לציין כי החסימה הסופית אינה מתבצעת אם הקובץ לא נמצא. בגלל ה System.exit על גושי התפיסה יוצא מה- JVM ואינו מאפשר סוף כל סוף לחסום לביצוע.

6. בחירת קוד סטטוס

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

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

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

בדוגמה שלהלן, כאשר אנו מנסים לבצע SystemExitExample.class, אם הוא יוצא מה- JVM על ידי התקשרות ל- System.exit עם קוד סטטוס שאינו אפס, ההד הבא לא נדפס.

java SystemExitExample && מהדהד "אני לא יודפס"

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

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

7. מסקנה

במדריך זה דנו כיצד System.exit עובד מתי להשתמש בו, וכיצד להשתמש בו.

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

אתה יכול לבדוק את הדוגמאות המפורטות במאמר זה ב- GitHub.