接口
接口
1.接口可以看作是一种特殊的“抽象类”。
2.接口有比抽象类更好的特性
3.可以被多继承
4.设计和实现完全分离
5.更自然的使用多态
接口约定
1.接口表示一种约定:体现在接口名称和注释上(有些接口只有名称,方法的实现方式要通过注释来约定)
2.接口是一种能力:体现在接口的方法上
3.面向接口编程:程序设计时面向接口的约定而不考虑具体实现。
4.面向接口编程:关心实现类有何能力,而不关心实现细节。
接口语法
public interface 接口名{
public void 方法名(){
//其他方法
}
使用接口:编写接口,实现接口,使用接口
接口特性
1.接口不可以被实例化
2.实现类必须实现接口的所有方法
3.实现类可以实现多个接口
4.接口中的变量都是常量
异常
异常概述
概述:异常是在程序的运行过程中所发生的不正常的事件,他会中断正在运行的程序
异常处理
1.关键字:try catch finally throw throws
2.Try:把可能出现异常的代码放入try中
3.Catch:捕捉异常
4.Finally:无论是否有异常,都会执行的代码
5.Throw:总是出现在方法体
6.Throws:总是出现在方法的声明中,用了表明改方法可能抛出的各种异常
常见的异常
Exception:异常层次结构的根类
ArithmeticException:算数错误的情形,
ArrayIndexOutOfBoundsException:数组大于或小于实际数组的大小
NullPointerException:尝试访问null对象成员
ClassNotFoundException:不能加载所需类
inputMismatchException: 欲得到数据类型与实际输入类型不匹配
IllegalArgumentException:方法接受到的非法参数
ClassCastExceptiom: 对象强制类型转换出错
NumberFormatException:数字格式转换异常
异常分类
异常类,分为两大类,错误Error和异常Exception。
其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常(非runtimeException),
也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。
1、Error与Exception
Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。
这些异常发生时,Java虚拟机(JVM)一般会选择线程终止
Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。程序中应当尽可能去处理这些异常。
2、运行时异常和非运行时异常
运行时异常: 都是RuntimeException类及其子类异常:
IndexOutOfBoundsException 索引越界异常
ArithmeticException:数学计算异常
NullPointerException:空指针异常
ArrayOutOfBoundsException:数组索引越界异常
ClassNotFoundException:类文件未找到异常
ClassCastException:造型异常(类型转换异常)
这些异常是不检查异常(Unchecked Exception),程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的。
非运行时异常:是RuntimeException以外的异常,类型上都属于Exception类及其子类。
log4j记录日子文件信息
log4j日志及分类
- SQL日志:记录系统执行的SQL语句
- 异常日志:记录系统运行中发生的异常事件
- 业务日志:记录系统运行过程
log4j使用步骤
1) 在项目中加入log4j所使用的jar文件
2) 创建log4j。properties文件
3) 编写log4j。properties文件,配置日志信息
log4j优先级
日志文件具有输出优先级:
从高到低:fatal error warn info debug
Fatal:指出严重的错误事件将会导致应用程序的退出
Error:指出虽然发生错误事件,但不影响系统的继续运行
Warn:表明会出现潜在错误情形
Info:在粗粒度级别上指明消息,强调应用程序的运行过程
Debug:指出细粒度信息事件,对调试应用程序是非常有帮助的
Log4j日志输出目的地
ConsoleAppender:输出日志事件到控制条
FileAppender:输出日志事件到一个文件
日志布局类型Layout
HTMLLayout:格式化日志输出为HTML表格
SimpleLayout:以一种非常简单的方式格式化日志输出
PatternLayout:根据指定的转换模式格式化日志输出,从而支持丰富多样的输出格式需要配置layout.ConversionPatterm属性
转换模式ConversionPatterm
%d:用来设置输出日志的日期时间
%,:用来输出代码中指定的消息
%n:用来输出一个回车换行符
%l:用来输出日志事件的发生位置,包括类名、发生的线程以及代码中的行数
%p:用来输出优先级
%F:用来输出文件名
%M: 用来输出方法名