假期学习20

第20天:异常处理
对应章节:第10章
(1)今天做了什么: 异常继承体系:Throwable→Error(OOM等JVM错误,无法处理)+Exception(可处理)。Exception分RuntimeException(非受检,如NPE、ArrayIndexOutOfBoundsException、ArithmeticException——逻辑问题,编译器不强求处理)和Checked异常(受检,如IOException、SQLException——编译器强制try-catch或throws声明)。try-catch-finally执行流程:try抛异常跳匹配catch→最后一定执行finally(除非System.exit())。多catch遵循子类在前父类在后。Java 7的try-with-resources:实现AutoCloseable接口的资源可在try()括号中声明,自动调用close()退出,告别手动finally关闭。throw主动抛出,throws方法签名声明。自定义异常继承Exception(受检)或RuntimeException(非受检),可加错误码字段。练习:设计登录系统——用户名过短、密码不合规、登录失败各抛不同异常。
(2)明天准备做什么: 学习第11章注解——基本注解(@Override/@Deprecated/@SuppressWarnings)、元注解(@Retention/@Target/@Documented/@Inherited)、自定义注解的语法、通过反射读取RUNTIME级别的注解信息。练习自定义@Test注解实现简易单元测试框架。
(3)遇到的问题: catch块写了catch(Exception e)放在最前面,下面具体的IOException等catch永远不会执行——编译直接报错(不可达代码)。finally中有return语句会覆盖try中的return值,调试了好久才发现。try-with-resources中的资源关闭顺序与声明顺序相反(类似栈)。自定义异常如果需要跨网络传输,需要实现Serializable并加serialVersionUID。

posted @ 2026-08-17 21:32  呱哒  阅读(11)  评论(0)    收藏  举报