【Java 入门 Day22】 异常篇(上):异常是什么?代码里的 “事故现场处理指南”!

【Java 入门 Day22】 异常篇(上):异常是什么?代码里的 “事故现场处理指南”! 家人们谁懂啊写代码的时候碰到报错总感觉像开车遇到事故要么直接 “原地去世” 程序崩溃要么不知道怎么处理只能对着报错信息抓耳挠腮。今天咱们就把 Java 里的异常这个 “事故处理系统” 扒得明明白白看完保证你再也不被报错搞心态一、异常是什么代码里的 “突发状况”异常说白了就是程序运行过程中出现的非正常情况就像你开车突然爆胎、闯红灯本来好好的流程被打断了。异常处理就是提前写好 “事故预案”遇到问题时执行准备好的代码减少用户损失还能给用户友好的提示不至于直接崩溃。二、异常的家族树Error 和 Exception 的区别面试必背Java 里所有的错误和异常都继承自Throwable类它俩就像异常家族的 “两大分支”1. Error程序救不了的 “绝症”Error是Throwable的子类代表严重错误靠程序本身根本恢复不了就像电脑硬件坏了软件怎么修都没用常见例子StackOverflowError递归导致栈溢出、OutOfMemoryErrorJVM 内存不足遇到这种错误程序直接凉透你处理不了只能改代码优化。2. Exception程序能救的 “感冒发烧”Exception也是Throwable的子类代表异常这种情况程序可以处理就像感冒发烧吃点药就能好它又分成两种1RuntimeException运行时异常编译器不管的 “小毛病”RuntimeException是运行时异常编译器不会检查运行的时候才报错属于 “能避免的小毛病”常见例子ArrayIndexOutOfBoundsException数组下标越界就像排队超出了队伍长度肯定报错。NullPointerException空指针异常就像你拿着空钥匙开门门肯定打不开。ClassCastException类型转换异常就像把猫强制转换成狗肯定不合法。NumberFormatException数字格式转换异常就像把 “abc” 转成数字肯定不行。特点写代码的时候不报错运行的时候才翻车处理不处理都行严谨的代码会提前判断避免。2非 RuntimeException非运行时异常编译器逼你处理的 “硬伤”非运行时异常也叫检查异常编译器会强制检查编译的时候就报错必须处理不然程序都跑不起来例子Class.forName(day1.TestStudent);加载类的时候如果找不到类就会报这个异常编译器会逼你要么抛出去要么 try-catch 处理。三、异常是怎么产生的两种 “翻车姿势”异常的产生有两种方式就像开车翻车要么自己不小心要么别人故意撞你1. 自动产生异常代码写错了程序自己翻车程序运行过程中遇到错误的代码会自动产生异常比如数组下标越界、空指针一旦遇到异常程序会直接终止后面的代码再也不会执行了。2. 手动产生异常用throw关键字主动 “制造事故”开发里有时候需要主动抛出异常比如参数不合法就用throw关键字手动抛出语法throw new 异常类名(异常信息);比如throw new IllegalArgumentException(年龄不能为负数);位置必须写在方法内部就像你在方法里发现参数不对直接抛出异常终止程序相当于return程序会因为异常被终止。四、异常的传递沿着方法调用链一路 “甩锅”Java 里的异常会沿着方法的调用链反向传递就像甩锅一样一层一层往上抛最后传递给 JVMJVM 直接终止程序打印报错信息。比如 A 方法调用 B 方法B 方法里出现异常B 方法处理不了就会把异常抛给 A 方法A 方法处理不了再抛给调用 A 方法的上层最后到 JVM程序就崩了。今天先唠到这异常的概念和分类你 get 到了吗下一篇咱们继续唠异常的处理方式throws声明异常和try-catch-finally捕获异常这俩是开发里的 “事故处理神器”看完你就再也不用对着报错慌了