English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

كيفية طباعة رسالة مخصصة بدلاً من ErrorStackTrace في Java؟

例外是程序执行期间发生的问题(运行时错误)。当发生异常时,程序会突然终止,并且生成异常的行之后的代码将永远不会执行。

打印异常消息

您可以使用从Throwable类继承的以下方法之一在Java中打印异常消息。

  • printStackTrace() -此方法将回溯打印到标准错误流。

  • getMessage() -此方法返回当前可抛出对象的详细消息字符串。

  • toString() -此消息显示当前可抛出对象的简短描述。

النموذج

import java.util.Scanner;
public class PrintingExceptionMessage {
   public static void main(String args[]) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter first number: ");
      int a = sc.nextInt();
      System.out.println("Enter second number: ");
      int b = sc.nextInt();
      try {
         int c = a/b;
         System.out.println("The result is: "+c);
      }catch(ArithmeticException e) {
         System.out.println("Output of printStackTrace() method: ");
         e.printStackTrace();
         System.out.println(" ");
         System.out.println("Output of getMessage() method: ");
         System.out.println(e.getMessage());
         System.out.println(" ");
         System.out.println("Output of toString() method: ");
         System.out.println(e.toString());
      }
   }
}

نتيجة الخروج

Enter first number:
10
Enter second number:
0
نتيجة طريقة printStackTrace()
java.lang.ArithmeticException: / by zero
نتيجة طريقة getMessage()
/ by zero
نتيجة طريقة toString()
java.lang.ArithmeticException: / by zero
at PrintingExceptionMessage.main(PrintingExceptionMessage.java:11)

طباعة رسالة الاستثناء المخصص

استعادة الاستثناء-يمكنك استخدام الكلمة المفتاحية new لاستعادة الاستثناء الذي تم التقاطه في block catch، عند تنفيذ هذا الإجراء، يجب عليك نقل استثناء المنفذ مع String تمثل الرسالة، ثم عرض الرسالة الأصلية التي تم نقلها.

النموذج

import java.util.Scanner;
public class PrintingExceptionMessage {
   public static void main(String args[]) throws Exception {
      String msg = "This is my custom message";
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter first number: ");
      int a = sc.nextInt();
      System.out.println("Enter second number: ");
      int b = sc.nextInt();
      try {
         int c = a/b;
         System.out.println("The result is: "+c);
      }catch(ArithmeticException e) {
         throw new Exception("CoustomMessage: " + msg, e);
      }
   }
}

نتيجة الخروج

Enter first number:
25
Enter second number:
0
Exception in thread "main" java.lang.Exception: CoustomMessage: This is my custom message
at july_set3.PrintingExceptionMessage.main(PrintingExceptionMessage.java:16)
سبب: java.lang.ArithmeticException: / by zero
at july_set3.PrintingExceptionMessage.main(PrintingExceptionMessage.java:13)

إنشاء استثناء مخصص-يمكنك إنشاء وتعديل استثناء مخصص باستخدام الرسالة المطلوبة.

النموذج

import java.util.Scanner;
class MyException extends Exception{
   public MyException(String msg){
      super(msg);
   }
}
public class PrintingExceptionMessage {
   public static void main(String args[]) throws Exception {
      String msg = "This is my custom exception";
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter first number: ");
      int a = sc.nextInt();
      System.out.println("Enter second number: ");
      int b = sc.nextInt();
      try {
         int c = a/b;
         System.out.println("The result is: "+c);
      }catch(ArithmeticException e) {
         MyException exce = new MyException(msg);
         throw exce;
      }
   }
}

نتيجة الخروج

Enter first number:
14
Enter second number:
0
Exception in thread "main" july_set3.MyException: This is my custom exception
   at july_set3.PrintingExceptionMessage.main(PrintingExceptionMessage.java:23)
توصياتك المفضلة