首页 > Java > java教程 > 正文

在Java中的自定义异常

王林
发布: 2023-08-24 11:41:08
转载
2059 人浏览过

在Java中的自定义异常

您可以在Java中创建自己的异常,它们被称为用户自定义异常或自定义异常。

要创建用户自定义异常,请扩展上述类之一。要显示消息,请重写toString()方法或通过以字符串格式绕过消息调用超类参数化构造函数。

MyException(String msg){
   super(msg);
}
Or,
public String toString(){
   return " MyException [Message of your exception]";
}
登录后复制

然后,在其他需要引发此异常的类中,创建一个已创建的自定义异常类的对象,并使用throw关键字抛出异常。

MyException ex = new MyException ();
If(condition……….){
   throw ex;
}
登录后复制

自定义已检查异常和自定义未检查异常

  • 所有异常都必须是Throwable的子类。

  • 如果您想编写一个由Handle或Declare规则自动强制执行的已检查异常,您需要扩展Exception类。

  • 如果您想编写一个运行时异常,您需要扩展RuntimeException类。

示例:自定义已检查异常

以下Java程序演示了如何创建一个自定义已检查异常。

 在线演示

import java.util.Scanner;
class NotProperNameException extends Exception {
   NotProperNameException(String msg){
      super(msg);
   }
}
public class CustomCheckedException {
   private String name;
   private int age;
   public static boolean containsAlphabet(String name) {
      for (int i = 0; i < name.length(); i++) {
         char ch = name.charAt(i);
         if (!(ch >= &#39;a&#39; && ch <= &#39;z&#39;)) {
            return false;
         }
      }
      return true;
   }
   public CustomCheckedException(String name, int age){
      if(!containsAlphabet(name)&&name!=null) {
         String msg = "Improper name (Should contain only characters between a to z (all small))";
         NotProperNameException exName = new NotProperNameException(msg);
         throw exName;
      }
      this.name = name;
      this.age = age;
   }
   public void display(){
      System.out.println("Name of the Student: "+this.name );
      System.out.println("Age of the Student: "+this.age );
   }
   public static void main(String args[]) {
      Scanner sc= new Scanner(System.in);
      System.out.println("Enter the name of the person: ");
      String name = sc.next();
      System.out.println("Enter the age of the person: ");
      int age = sc.nextInt();
      CustomCheckedException obj = new CustomCheckedException(name, age);
      obj.display();
   }
}
登录后复制

编译时异常

编译时,上述程序会生成以下异常。

CustomCheckedException.java:24: error: unreported exception NotProperNameException; must be caught or declared to be thrown
   throw exName;
   ^
1 error
登录后复制

示例:自定义未选中异常

如果您只是将自定义异常继承的类更改为RuntimeException,它将在运行时抛出

class NotProperNameException extends RuntimeException {
   NotProperNameException(String msg){
      super(msg);
   }
}
登录后复制

如果您运行上述程序,将NotProperNameException类替换为上面的代码并运行它,将生成以下运行时异常。

运行时异常

Enter the name of the person:
Krishna1234
Enter the age of the person:
20
Exception in thread "main" july_set3.NotProperNameException: Improper name (Should contain only characters between a to z (all small))
   at july_set3.CustomCheckedException.<init>(CustomCheckedException.java:25)
   at july_set3.CustomCheckedException.main(CustomCheckedException.java:41)
登录后复制

以上是在Java中的自定义异常的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板