内部类、类与对象的关系、异常
- 接口里的所有定义其实都是抽象的 public abstract(默认)
- 直接写 返回值类型 方法名(参数);
- 写法上接口就是interface修饰的类
- 接口都需要实现类
- 接口中定义的量都是常量即默认public static final
- 抽象的思维 Java架构师
- 接口不能被实例化,接口中没有构造方法;
- implements 可以实现多个接口中的方法
内部类
- 内部类就是在一个类的内部定义一个类,比如,A类中定义了一个B类,那么B类相对A类来说就称为内部类,而相对B类来说就是外部类了。
- 1.成员内部类;
- 2.静态内部类;
- 3.局部内部类;
- 4.匿名内部类;
类与对象的关系
- 类是一种抽象的数据类型,它是对某一类事物整体的描述与定义,但并不能代表某一个具体事物。
- 动物、植物、手机、电脑.....
- 对象是抽象概念的具体实例
- 张三是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。
- 能够体现出特点,展现出共能的具体的实例,而不是一个抽象的概念
异常
-
什么是异常?
- 软件运行过程中,可能某个模块输入不符合要求,文件不存在或者格式不对,读取数据,数据是空的,内存满了,或者硬盘满了.....
- 以上这些异常问题,叫异常,英文是Exception,意思是例外
-
指程序运行过程中出现的各种不期而至的各种状况,如:文件找不到,网络连接失败、非法参数.......
-
异常发生在程序运行期间,它影响了正常的程序执行流程。
-
分类:
- 检查性异常:最初是用户错误引起的异常,无法预见。
- 异常在编译时不能被简单的忽略。
- 运行时异常:可以被程序员避免的异常,与检查性异常相反,运行时异常可以在编译时被忽略。
- 错误:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。
- 当栈溢出时一个错误就发生了。编译时查不到。
-
异常处理框架
-
Java中把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。
-
Java API中已经定义了多种异常类,分为两大类,错误和异常。
-
NullPointerExcetion空指针异常。
-
ArrayIndexOutOfBoundsException数组下标越界异常。
-
Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。
- VirtualMachineError虚拟机运行错误:
- 当jvm不载继续执行操作所需内存资源的时候,将出现OutOfMenmoryError。
- 这些异常发生时,Java虚拟机一般会选择线程终止
- 还有发生虚拟机试图运行程序时,如类定义错误(NoClassDefFoundError)、链接错误(LinkageError)。
- 这些错误是不可察的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的情况。
-
异常处理机制
- 抛出异常
- 捕获异常
- 关键字
- try(试)、catch(捕获)、finally(最终)、thorw、thows
-
自定义异常
- 使用Java内置的异常类可以描述在编程时出现的大部分异常情况,除此之外,用户还可以自定义异常。
- 用户自定义异常类,只需要继承大部分Exception类即可。
- 在程序中使用自定义异常类,可以分为以下几个步骤
- 1.创建自定义异常类,
- 2.在方法中通过throw关键字抛出异常对象
- 3.如果在当前抛出的异常的方法中处理异常,可以使用try-catch语句捕获异常并处理,
- 否则在方法声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
- 4.在出现异常方法的调用者中捕获并处理异常
-
实际应用中的经验总结
- 处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
- 在多重catch快后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
- 对于不确定的代码也可以加上try-catch处理潜在异常
- 尽量去处理潜在异常,要根据不同的业务需求和异常类型去决定
- 尽量添加finally语句去释放占用的资源