异常处理
1. 内部类
1.1 一般内部类
- 内部类是定义在其他类内部的类。
- 内部类可以是外部类的成员变量。
- 内部类可以是私有的或静态的,具体取决于访问和使用的需求。
1.2 局部内部类
- 局部内部类是在方法内部定义的,不能有访问修饰符。
- 在局部内部类中使用的变量会隐式变为final。
1.3 匿名内部类
- 匿名内部类是没有名字的类,它可以继承一个类或实现一个接口。
- 通常用于快速实现接口或抽象类的实例。
- 可以在创建时直接实例化。
2. Object类
2.1 Object类方法
clone()
: 创建并返回对象的副本。finalize()
: 不推荐使用,已在JDK 9中过时。getClass()
: 返回对象的运行时类。hashCode()
: 返回对象的哈希码值/地址值。toString()
: 返回对象的字符串表示形式。notify()
,notifyAll()
,wait()
,wait(long timeoutMillis)
,wait(long timeoutMillis, int nanos)
: 与同步相关的方法。
2.2 重写equals和hashCode
equals(Object obj)
: 默认使用==
进行比较;建议根据内容进行重写。hashCode()
: 当重写equals
时,应当重写hashCode
以保持equals
和hashCode
的一致性。
3. 枚举
- 枚举是一种特殊的类,定义了一组有限的常量值。
- 枚举通常用于表示一组相关的常量。
- 枚举常量通常使用大写字母表示。
4. 异常处理
4.1 异常体系
Throwable
是所有错误和异常的超类。Error
表示严重错误,通常无法恢复。Exception
表示可能出现的异常,分为可检查(编译时)和不可检查(运行时)异常。
4.2 异常处理结构
- 使用
try-catch
块来处理异常。 - 可以使用多个
catch
块来捕获不同类型的异常。 finally
块包含无论是否发生异常都会执行的代码。
4.3 抛出异常
- 使用
throw
可以显式抛出异常。 - 在方法签名中使用
throws
声明可能抛出的异常。
4.4 处理和打印异常信息
- 使用
getMessage()
、toString()
和printStackTrace()
等方法获取和打印异常信息。
异常体系 : Throwable : 是Java语言中所有错误和异常的超类 |Error/错误 : 表示合理的应用程序不应该试图捕捉的严重问题. |Exception/异常 : 表示合理的应用程序可能想要捕获的条件。 |RuntimeException/运行时异常 : 代码执行过程中才出现的异常 , 比如 NullPointerException |RuntimeException之外的异常/编译时异常 : 编译时期就会提示,比如 ClassNotFoundException
只有作为此类实例(或其子类之一)的对象才会由Java虚拟机抛出, 或者可以由Java抛出语句抛出。 类似地,只有这个类或它的一个子类可以是catch子句中的参数类型。
注意 : 1.有异常但没有异常处理结构时 : 程序会终止在异常发生的那一行 2.有异常并且有对应异常处理结构时 : 程序在异常产生的位置开始跳转 ----> catch语句 ----> finally语句 ----> 程序正常运行 3.有异常并且有异常处理结构 , 但是没有对产生的异常进行处理时 : 程序在异常产生的位置开始跳转 ----> finally语句 ----> 程序打印异常信息 ----> 程序终止 4.有 处理方式 , 但没有异常产生 : try语句执行完后 --> finally语句 ---> 程序正常运行
throw : 动词 , 用于函数内部抛出一个异常 ; 如果抛出的是一个编译时异常,需要在函数部分进行声明 ; 如果抛出的是一个运行时异常,不需要在函数部分进行声明 ;
throws : 名次 , 用于函数声明部分 , 声明异常
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!