Java中的异常有哪几类?分别怎么使用? Java的异常体系根源于java.lang.Throwable类所有能被异常处理机制传递的对象都必须是它的子类整体可以分为三大核心类别不同类型的异常对应不同的使用场景和处理规则1. Error系统级错误这类属于程序完全无法恢复的严重问题是JVM运行环境层面的故障和业务代码本身的逻辑错误无关Java规范明确不要求开发者对其进行捕获处理。常见示例OutOfMemoryError内存溢出、StackOverflowError栈溢出使用规则不需要编写try-catch代码处理出现这类错误时通常需要调整JVM内存配置、优化代码的递归深度从运行环境层面解决问题。2. 受检异常Checked Exception属于Exception的子类中除RuntimeException及其子类之外的所有异常是语法层面强制要求处理的异常不处理就会编译报错。这类异常通常由程序外部的不可控因素引发而非代码逻辑错误导致。常见示例FileNotFoundException文件不存在、ParseException日期格式解析失败、IOException文件读写失败使用规则要么用try-catch块直接捕获处理捕获后打印日志、返回友好提示保证程序后续代码可以继续执行要么在方法声明处用throws关键字向上抛出把异常处理的责任交给上层调用者示例代码publicstaticvoidmain(String[]args){SimpleDateFormatsdfnewSimpleDateFormat(yyyy-MM-dd);try{Datedatesdf.parse(1999-09-09);}catch(ParseExceptione){e.printStackTrace();}System.out.println(后续代码可以正常执行);}3. 运行时异常Runtime Exception是RuntimeException及其所有子类的统称语法上不强制要求显式处理即使不捕获也不会出现编译错误。这类异常几乎都是由代码逻辑缺陷引发的属于可以通过编码规范提前规避的问题。常见示例NullPointerException空指针异常、ArrayIndexOutOfBoundsException数组下标越界、ArithmeticException算术除零异常、ClassCastException类型转换异常使用规则优先通过前置校验避免异常发生比如访问数组前先判断下标是否在合法范围内、类型强转前用instanceof校验类型匹配性不需要在方法上冗余声明抛出这类异常仅在顶层全局异常拦截处统一捕获兜底避免异常直接导致程序崩溃示例代码int[]arr{1,2,3};intindex3;// 前置校验规避数组越界if(index0indexarr.length){intvaluearr[index];}除此之外Java还支持自定义异常继承对应的Exception类即可用于封装业务场景特有的错误状态比如用户权限不足、订单状态非法等场景让异常信息更贴合业务逻辑便于问题定位。