בחלק זה נלמד כיצד להדפיס הודעות חריגות ב-Java על ידי שימוש בשיטות שונות של ניתן לזרוק ג'אווה מעמד . המחלקה Throwable מספקת את שלוש השיטות הבאות להדפסת הודעת החריגה:
- שימוש בשיטת printStackTrace
- שימוש בשיטת getMessage()
- שימוש בשיטת toString()
בואו נדון בזה אחר זה בפירוט.
שימוש בשיטת printStackTrace()
ה printStackTrace() שיטה מוגדר ב- ניתן לזרוק מחלקה ששייכת לחבילת java.lang. השיטה מדפיסה את שם, תיאור (כמו / באפס ), וה עקבות מחסנית (מספר שורה ושם מחלקה כאשר החריג הועלה) של חריג. מעקב המחסנית עוקב אחר היכן מתרחש החריג הבא. הוא נמצא בשימוש נרחב להדפסת הודעת החריגה.
קיימות שלוש גרסאות של שיטת printStackTrace():
מסגרת אוספי java
תחביר | תיאור |
---|---|
printStackTrace() | השיטה מדפיסה את האפשרי לזרוק הזה ואת המעקב שלו לאחור לזרם השגיאות הסטנדרטי. |
public void printStackTrace(PrintStream s) | השיטה מדפיסה ניתנת לזריקה ועקיבה לאחור לזרם ההדפסה שצוין. |
public void printStackTrace(PrintWriter s) | השיטה מדפיסה ניתנת לזריקה ועקיבה לאחור שלה לכותב ההדפסה שצוין. |
כדי להבין את הרעיון של שיטת printStackTrace(), ראשית, ניצור א Java תוכנית שהעלתה חלוקה באפס חריגה. בתוכנית זו, לא נשתמש בשיטת printStackTrace() כדי להדפיס את החריגה.
PrintExceptionMessage1.java
public class PrintExceptionMessage1 { //user defined method public static void divide() { try { //raised divide by zero exception int a = 100/0; } catch (Exception e) { //prints exception message System.out.println(e); } } //main() method public static void main(String args[]) { //calling user defined method divide(); } }
כאשר אנו מפעילים את התוכנית לעיל, אנו מקבלים חריג אריתמטי וההודעה הבאה מודפסת על המסוף:
בהודעה לעיל, איננו יכולים לציין איזו שורה זורק חריג. לכן, קשה למצוא היכן מתרחשים חריגים. כדי להתגבר על בעיה זו אנו משתמשים בשיטת printStackTrace() . בוא נשתמש בשיטת printStackTrace() בתוכנית Java.
PrintExceptionMessage2.java
פקודת linux עבור zip
public class ExceptionExample2 { //user defined method public static void divide() { try { //raised divide by zero exception int a = 100/0; } catch (Exception e) { //prints exception message and detail of the exception e.printStackTrace(); } } //main() method public static void main(String args[]) { //calling user defined method divide(); } }
בואו נריץ את התוכנית לעיל.
הודעת החריג לעיל מראה בבירור איזו שיטה העלתה חריג, איזה סוג חריג הוא ואיזו שורה זורק חריג.
השורה הראשונה של ההודעה מראה שהתוכנית זורקת א java.lang.ArithmeticException (לחלק באפס). השורה השנייה מראה שחריגים מתרחשים בקו 9 והשיטה divide() זורקת חריגה. השורה השלישית מציגה את החריג הזה בשורה עשרים ואחת . השיטה main() זורקת גם חריגה מכיוון שמתודה divide() נקראת בתוך השיטה main(). לפיכך, שימוש ב- printStackTrace() שיטה, נוכל להצביע בקלות על מיקום מדוייק של החריג.
שימוש בשיטת getMessage()
ה getMessage() השיטה מוגדרת גם ב- ניתן לזרוק מחלקה ששייכת לחבילת java.lang. השיטה מדפיסה רק את ההודעה של חריג. זה לא מדפיס את שם החריג ולא את התיאור. הוא נמצא בשימוש נרחב להדפסת הודעת החריגה.
תחביר:
public String getMessage();
הוא מחזיר את מחרוזת הודעת הפירוט של המופע הניתן ל-Throwable. יכול להיות שהוא ריק.
בואו נשתמש בשיטת getMessage() בתוכנת Java.
PrintExceptionMessage3.java
public class PrintExceptionMessage3 { public static void main(String args[]) { try { int a = 100/0; } catch (Exception e) { //prints only the message of the exception System.out.println(e.getMessage()); //use the following statement if you want to print name of the exception and which exception thrown //System.out.println(e); } } }
בואו נריץ את התוכנית לעיל.
אנו רואים שהוא מדפיס רק את החריג. לכן, הוא אינו בשימוש נרחב מכיוון שהוא אינו מדפיס את התיאור המפורט של חריג.
שימוש בשיטת toString()
ה toString() שיטת ה ניתן לזרוק הכיתה עוקפת את toString() שיטה של המחלקה Object. הוא מדפיס את התיאור הקצר של חריג. זה לא מציג את המידע האחר (כמו שם חריג ומעקב מחסנית). הוא אינו בשימוש נרחב להדפסת הודעת החריגה.
בוא נשתמש בשיטת toString() בתוכנית Java.
PrintExceptionMessage4.java
public class PrintExceptionMessage4 { public static void main(String args[]) { try { int a = 100/0; } catch (Exception e) { //we can use either of the statement to print the exception message //both prints the same message System.out.println(e.toString()); //System.out.println(e); } } }
בואו נריץ את התוכנית לעיל.
בהודעה לעיל, אנו רואים שהיא מדפיסה רק את השם והסוג של החריג. היא אינה מציינת באיזו חריגה מהשורה התרחשה.
המרת מחרוזת ל-json java
ראינו את הדרכים השונות להדפיס את הודעת החריגה ב-Java. אנו מציעים לך להשתמש ב- printStackTrace() שיטה מכיוון שהיא מצביעה על המיקום שבו מתרחש חריג.