文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java之异常

2023-09-21 09:44

关注

在这里插入图片描述

作者简介: zoro-1,目前大二,正在学习Java,数据结构等
作者主页: zoro-1的主页
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

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;}......

事后处理型

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 < 0 || index >= array.length){        throw new ArrayIndexOutOfBoundsException("传递的数组下标越界");   }        return array[index];} public static void main(String[] args) {    int[] array = {1,2,3};    getElement(array, 3);}

在这里插入图片描述

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

在这里插入图片描述

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);   }}

今天的分享到这就结束了,记得三连哦,谢谢大家支持
在这里插入图片描述

来源地址:https://blog.csdn.net/ltzoro/article/details/132990727

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯