Java之异常

2024-02-27 1799阅读

温馨提示:这篇文章已超过460天没有更新,请注意相关的内容是否还可用!

Java之异常

作者简介: zoro-1,目前大二,正在学习Java,数据结构等

作者主页: zoro-1的主页

欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

Java之异常

  • 认识异常
  • 异常的体系结构
  • 异常的处理
    • 防御式处理
    • 异常的抛出
    • 异常的捕获及处理(try-catch-finally)
      • fianlly讲解
      • 编译时异常(受查异常)
      • 运行时异常
      • 自定义异常
        • 运行时异常

          认识异常

          异常是指程序运行时发生的错误或意外情况,它可能导致程序无法继续执行或产生不正确的结果。在编程中,异常通常是由于输入数据错误、计算错误、系统故障或资源不足等原因引起的。程序员可以在代码中使用异常处理机制来捕获和处理这些异常,从而避免程序崩溃或产生不恰当的结果。常见的异常包括空指针异常、数组越界异常、算术异常等。

          异常的体系结构

          Java之异常

          Java之异常

          异常的处理

          防御式处理

          错误在代码中是客观存在的. 因此我们要让程序出现问题的时候及时通知程序猿. 主要的方式

          1.事前防御型:

          boolean ret = false;
          ret = 登陆游戏();
          if (!ret) {
           处理登陆游戏错误;
              return;
          }
          ret = 开始匹配();
          if (!ret) {
           处理匹配错误;
              return;
          }
          ret = 游戏确认();
          if (!ret) {
           处理游戏确认错误;
              return;
          }
          ret = 选择英雄();
          if (!ret) {
              处理选择英雄错误;
              return;
          }
          ret = 载入游戏画面();
          if (!ret) {
           处理载入游戏错误;
              return;
          }
          ......
          

          2.事后处理型

          try {
              登陆游戏();
              开始匹配();
              游戏确认();
              选择英雄();
              载入游戏画面();
             ...
          } catch (登陆游戏异常) {
              处理登陆游戏异常;
          } catch (开始匹配异常) {
           处理开始匹配异常;
          } catch (游戏确认异常) {
           处理游戏确认异常;
          } catch (选择英雄异常) {
           处理选择英雄异常;
          } catch (载入游戏画面异常) {
           处理载入游戏画面异常;
          }
          

          异常的抛出

          在编写程序时,如果程序中出现错误,此时就需要将错误的信息告知给调用者,比如:参数检测。在Java中,可以借助throw关键字,抛出一个指定的异常对象,将错误信息告知给调用者。具体语法如下:

          throw new XXXException("异常产生的原因");
          

          【需求】:实现一个获取数组中任意位置元素的方法。

          public static int getElement(int[] array, int index){
              if(null == array){
                   throw new NullPointerException("传递的数组为null");
                   }
                  
              if(index = array.length){
                  throw new ArrayIndexOutOfBoundsException("传递的数组下标越界");
             }
              
              return array[index];
          }
           
          public static void main(String[] args) {
              int[] array = {1,2,3};
              getElement(array, 3);
          }
          

          Java之异常

          异常的捕获及处理(try-catch-finally)

          Java之异常

          fianlly讲解

          一般是用来关闭资源,为什么不在程序最后关闭资源呢,因为fianlly里语句一定会被执行且在return语句前,而程序最后之前的try语句如果return,那程序最后就不能关闭资源了,但fianlly语句中最好不要用return语句,因为try里面有return语句的话,fianlly里面就会执行,那try里面的return就没意义了

          编译时异常(受查异常)

          编译时异常是指在编译程序时就可以检测到的异常,也称为受检异常。如果程序中没有对这些异常进行处理,编译器会报错,无法编译通过。

          几个编译时异常:

          1. FileNotFoundException(文件未找到异常):在读取文件时,如果文件不存在,就会抛出该异常。

          2. IOException(输入输出异常):在进行输入输出操作时,如果操作失败,则会发生该异常。

          3. SQLException(SQL异常):在进行数据库操作时,如果SQL语句有误或者连接数据库失败,就会抛出该异常。

          4. ClassNotFoundException(类未找到异常):在加载类时,如果找不到指定的类,就会发生该异常。

          这些异常都需要在代码中进行处理,否则编译器就会报错,无法编译通过。通常,我们会使用try-catch语句来捕获并处理这些异常。

          运行时异常

          运行时异常(RuntimeException)指的是在程序执行期间发生的异常,它们不需要在代码中显式地处理或声明。这些异常通常是由程序的错误逻辑或代码错误引起的,例如空指针异常(NullPointerException)、数组下标越界异常(ArrayIndexOutOfBoundsException)、算术异常(ArithmeticException)和类转换异常(ClassCastException)等。

          下面给出几个例子:

          1. NullPointerException
          String str = null;
          System.out.println(str.length());
          
          1. ArrayIndexOutOfBoundsException
          int[] arr = {1, 2, 3};
          System.out.println(arr[3]);
          
          1. ArithmeticException
          int a = 10;
          int b = 0;
          System.out.println(a / b);
          
          1. ClassCastException
          Object obj = "hello";
          Integer num = (Integer) obj;
          

          自定义异常

          继承Exception,必须要处理或声明

          public class Text8 {
              public static void main(String[] args) {
                  try {
                      throw new My_E("编译时自定义异常");
                  } catch (My_E e) {
                  }
              }
          }
          class My_E extends Exception{
             public My_E(String str){
                 super(str);
             }
          }
          

          运行时异常

          继承RuntimeException,不需要处理

          public class Text8 {
              public static void main(String[] args) {
                      throw new My_Run("运行时自定义异常");
              }
          }
          class My_Run extends RuntimeException{
             public My_Run(String str){
                 super(str);
             }
          }
          

          今天的分享到这就结束了,记得三连哦,谢谢大家支持

          Java之异常

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]