当前位置: 首页 > news >正文

java退出程序异常分类

一、概述

在 Java 中,退出程序异常主要分为 Error 和 Exception 两大类,它们各自包含多种具体类型,以下是详细介绍及具体影响实例:

二、分类

Error(错误)

  • 描述:Error 表示系统级的错误,是 Java 运行时环境内部的错误或资源耗尽等严重问题,通常是不可恢复的,一般不应该由应用程序来处理。
  • 常见类型及实例
    • OutOfMemoryError:当 Java 虚拟机无法为新的对象分配足够的内存空间时抛出。例如,以下代码尝试创建一个非常大的数组,可能会导致 OutOfMemoryError。
public class OutOfMemoryErrorExample {
    public static void main(String[] args) {
        int[] array = new int[Integer.MAX_VALUE];
    }
}
  • StackOverflowError:当线程的栈空间被耗尽时抛出,通常是因为方法调用层次过深,例如无限递归。如下代码:
public class StackOverflowErrorExample {
    public static void main(String[] args) {
        recursiveMethod();
    }

    public static void recursiveMethod() {
        recursiveMethod();
    }
}

Exception(异常)

  • 描述:Exception 表示程序运行过程中出现的可恢复的异常情况,可以通过 try - catch 语句进行捕获和处理,使程序能够继续执行。
  • 常见类型及实例
    • IOException:在进行输入输出操作时发生错误会抛出此异常。例如,试图读取一个不存在的文件时:
import java.io.FileInputStream;
import java.io.IOException;

public class IOExceptionExample {
    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream("non_existent_file.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  • NullPointerException:当应用程序试图在一个空对象上调用方法或访问属性时抛出。例如:
public class NullPointerExceptionExample {
    public static void main(String[] args) {
        String str = null;
        System.out.println(str.length());
    }
}

  • ArrayIndexOutOfBoundsException:当访问数组时使用了超出数组范围的索引会抛出该异常。例如:
public class ArrayIndexOutOfBoundsExceptionExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3};
        System.out.println(array[3]);
    }
}

  • ClassCastException:当试图将一个对象强制转换为不兼容的类型时抛出。例如:

public class ClassCastExceptionExample {
    public static void main(String[] args) {
        Object obj = new Integer(1);
        String str = (String) obj;
    }
}

  • NumberFormatException:当试图将一个字符串转换为数字格式,但字符串的格式不正确时抛出。例如:
public class NumberFormatExceptionExample {
    public static void main(String[] args) {
        String str = "abc";
        int num = Integer.parseInt(str);
    }
}

相关文章:

  • Geoserver修行记--离了个大谱,Geoserver的图层搜索不能用
  • 移动wsl2的系统镜像
  • 混合精度-基于torch内部
  • 阿里qwen大模型AI智能分析实时对话生成病例的DEMO
  • 设计一套水产养殖系统
  • 安卓NAS,众乐影音APP,低成本打造全能家庭存储中心
  • 使用excel.EasyExcel实现导出有自定义样式模板的excel数据文件,粘贴即用!!!
  • Midjourney使用教程—2.作品修改
  • 从零开始学Seata:分布式事务的终极解决方案
  • mysql not in 查询不出来null的原因
  • 【视觉提示学习】3.21论文随想
  • 流程优化的可配置文档结构化系统设计
  • VLAN综合实验报告
  • Webrtc编译官方示例实现视频通话
  • doris:弹性扩缩容
  • 零基础搭建智能法律知识库!腾讯云HAI实战教程
  • GLB文件介绍
  • LeetCode146.LRU 缓存(哈希表+双向链表)
  • debug - 安装.msi时,为所有用户安装程序
  • C# WPF编程-ToggleButton
  • 郑钦文憾负高芙,止步WTA1000罗马站四强
  • 龚正市长调研闵行区,更加奋发有为地稳增长促转型,久久为功增强发展后劲
  • 浙江省台州市政协原副主席林虹被“双开”
  • ESG考证虚火:相比证书,知识结构+实战经验更重要
  • 著名植物学家、园艺学家,国际植物园协会原主席贺善安逝世
  • 中科飞测将投资超10亿元,在上海张江成立第二总部