异常(下)Java常见异常,异常的使用原则

简介: 异常(下)Java常见异常,异常的使用原则

前言

       该文介绍了Java的一些常见异常,并给出对应的例子进行解释。介绍异常的使用原则,即创建,抛出异常的编程规范。

一、Java常见异常

        前要:Java API中提供了一些异常类,这些异常类用来在控制台中,反馈出经常发生的BUG。这些异常中,一些是Java虚拟机自动进行捕获处理的,一些需要程序员进行捕获处理或声明抛出。

1.常见异常

异常类 说明
ArithmeticException 算术异常
ArrayIndexOutOfBoundsException 数组下标越界异常
ArrayStoreException 数组中包含不兼容的值抛出的异常
ClassCastException 类型转换异常
ClassNotFoundException 未找到相应类异常
NullPointerException 空指针异常
NoSuchFieldException 字段未能找到异常
NegativeArrarySizeException 数组长度为负异常
IllegalArgumentException 非法参数异常
SQLException 操作数据库异常
SecurityException 安全性异常

2.实例展示        

        (1)ArithmeticException

               算数异常:即运算中与运算逻辑不相符的错误运算。

               实例:

public class Demo {
  public static void main(String[] args) {
    int a = 1;
    int b = a/0;
    //此处发生了算数异常,除法运算中,除数不能为零
  }
}

 输出结果:

       (2)ArrayIndexOutOfBoundsException

               数组下标越界异常:即赋值或调用数组时,数组的索引位置超出了创建该数组的范围。

               实例:                

public class Demo {
  public static void main(String[] args) {
    int a[] = new int[100];
    //创建了一个 a[]数组,容量范围为 0-99
    a[100] = 1;
        //此处发生了数组下标越界异常,a[]数组的索引范围为 0 ≤ x < 100 ,所以100超出索引范围    
  }
}

   输出结果:

       (3)ArrayStoreException

               数组中包含不兼容的值异常:即给数组赋值时,此赋值的数据类型与创建时该数组的数据类型不相符。

                实例:

public class Demo {
  public static void main(String[] args) {
    // 创建一个整数数组
    Object arr[] = new Integer[5];
    // 尝试将一个字符串对象存储到整数数组中
    arr[0] = "Hello";
    //此处发生了数组中包含不兼容的值异常,arr[]数组 数据类型为 整数,arr[0] 数据类型为 String
  }
}

        输出结果:

       (4)ClassCastException

               类型转换异常:即在赋值或运算过程中,转换数据的类型前后不对应(即使进行了强转换)。

               实例:

public class Demo {
  public static void main(String[] args) {
    //创建了一个 Integer 整数类型的 obj 对象
    Object obj = new Integer(10);
    //尝试将 Integer类型的obj 转换为 String类型
    String str = (String) obj; 
    //这里发生了类型转换异常,整数类型转换为了String类型,不能转换
  }
}

    输出结果:        

       (5)ClassNotFoundException

                未找到相应类异常即调用了一个不存在的类,或者调用路径错误,拼写错误,导致不存在。

              实例:

public class Demo {
  public static void main(String[] args) {
    try {
            //该类的路径不存在此类
        Class.forName("com.example.NonExistentClass");
            //发生了异常
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
  }
}

    输出结果:

       (6)NullPointerException

               空指针异常:即引用对象为null,没有指向一个具体的数据,相关的操作指令无法进行。

               实例:

public class Demo {
  public static void main(String[] args) {
    String str = null;
    int length = str.length(); 
    //这里会抛出空指针异常,因为str为null
  }
}

(7)NegativeArrarySizeException

               数组长度为负异常:即创建的一个数组时,其索引范围为一个负数,使x<0,与0≤x相违背。

               实例:

public class Demo {
  public static void main(String[] args) {
    try {
            int[] arr = new int[-5];
            // 尝试创建一个具有负数大小的数组,发生异常
        } catch (NegativeArraySizeException e) {
            e.printStackTrace();
        }   
  }
}

  输出结果:

       (8)IllegalArgumentException

               非法参数异常:即我们调用方法时, 传递了无效、不合法或不符合预期的参数值。

              实例:

public class Demo {
  public static void main(String[] args) {
    try {
            int age = -5;
            if (age < 0) {
                throw new IllegalArgumentException("age 是一个不符合预期的参数:年龄不能小于零");
            }
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        }   
  }
}

  输出结果:                      

二、异常的使用原则

       (1)发生异常尽量不要抛出,尽量直接处理掉。

       (2)不能忽略抛出的异常,并且一定要使用 try-catch 代码块反馈报错。

       (3)不要将过于庞大的代码套入 try-catch 代码块。此操作会增加异常产生的可能性,更难识别出异常的性质。尽可能是代码中的一小部分套入 try-catch 代码块。

       (4)不要过度使用 catch 代码块。多余的 catc代码块(本意用于反馈并处理异常,但是画蛇添足) 会使进程进行多余的判断,增加CPU的运行压力,浪费系统资源。

       (5)子类抛出的异常不能比父类更高级。(特例:RuntimeException 异常及其子类不受此原则的约束)。

总结

       以上就是对Java异常的一些常见API中异常的总结,异常的使用规范的补充内容。如果对该文有补充或指正的内容,欢迎在评论区中留言。博主会及时进行反馈的。

相关文章
|
14小时前
|
Java
何处理Java中的ZipException异常?
何处理Java中的ZipException异常?
|
14小时前
|
Java UED 程序员
解决Java中的IllegalArgumentException异常的技术实践
解决Java中的IllegalArgumentException异常的技术实践
|
14小时前
|
Java UED
Java中如何优雅地处理TimeoutException异常?
Java中如何优雅地处理TimeoutException异常?
|
14小时前
|
监控 Java
解决Java中的MalformedURLException异常的实用技巧
解决Java中的MalformedURLException异常的实用技巧
|
14小时前
|
JSON 监控 Java
Java中如何解决JsonProcessingException异常?
Java中如何解决JsonProcessingException异常?
|
14小时前
|
Java
如何处理Java中的RemoteException异常?
如何处理Java中的RemoteException异常?
|
14小时前
|
安全 Java 网络安全
如何在Java中处理SSLHandshakeException异常?
如何在Java中处理SSLHandshakeException异常?
|
14小时前
|
Java 网络架构 程序员
解决Java中的NoRouteToHostException异常的方法
解决Java中的NoRouteToHostException异常的方法
|
14小时前
|
网络协议 Java 网络安全
Java中如何解决ConnectException异常?
Java中如何解决ConnectException异常?
|
14小时前
|
Java
解决Java中的EOFException异常的方法
解决Java中的EOFException异常的方法