1、JAR文件
概述:一个用与Java归档的压缩文件(清单),可以指明应用程序的主类、可以打包静态的资源文件(图片、文本、配置文件等等)并用于在类中进行调用
2、applet:一种包含在HTML网页中的Java应用程序
别说我偷懒,(⊙o⊙)
3、错误的处理
返回到一种安全状态,并能够让用户执行一些其他的命令
允许用户报错所有操作的结果,并以适当的方式终止程序
4、异常
分类:
Error:内部错误和资源耗尽错误
RuntimeException(与名称无关,这些异常都是在运行时的):错误的类型转换、数组访问越界、访问空指针
其他:试图在文件尾部读取数据、试图打开一个不存在的文件、试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在。
分类:未检查异常(Error、RuntimeException)、已检查异常(其他all)
异常的处理方法:抛出、捕获
异常的抛出方法:
a 找到一个合适的异常类 (throws E0FException)
b 创建这个类的一个对象 (E0FException e = new E0FException() )
c 将对象抛出 (throw e) ( 创建+抛出 throw new E0FException() )
异常类的创建
5、捕获异常
捕获与抛出的区别:异常抛出程序会立即结束,而捕获可以做更多的处理
捕获异常的方法:try/catch语句块
try
{
code
more code
more code
}
catch(ExceptionType e)
{
handler for this type
}
捕获异常的执行方式:
程序将跳过try语句块的其余代码
程序将执行catch子句中的处理器代码
捕获多个异常:
异常无法捕获时,可以在最后加入finally子句,确保程序被关闭
6、栈堆跟踪
栈堆跟踪:是一个方法调用过程的列表,包含了程序执行过程中方法调用的特定位置
使用:调用Throwable类的printStackTrace方法访问堆栈跟踪的文本描述信息
7、异常机制的使用技巧
a 异常处理不能代替简单的测试(因为捕获异常的时间花费大大超过测试)
b 不要过分的细化异常
c 利用异常层次结构
d 不要压制异常
e 在检测错误时,“苛刻”要比放任更好
f 不要羞于传递异常
8、断言的使用
使用:assert x >= 0; or assert x >=0 : x; AssertionError 抛出异常(后者会把x值也进行传出)
断言:可以设置启用或禁用
9、Java语言的处理系统错误机制
三种:抛出异常、日志、使用断言
10、断言的使用场景
断言使用特点:
断言失败是致命的、不可恢复的错误
一版用于开发和测试阶段
常用于:检查方法的参数
11、日志
日志系统的使用:Logger.getGlobal().info("File->Open menu item selected")
记录结果:May 10, 2021 10:12:15 PMLoggingImageViewer fileOpen
INFO:File->Open menu item selected
取消全部的日志:Logger.getGlobal().setLevel(Level.OFF)
高级日志:
日志记录级别:SEVERE/WARNING/INFO/CONFIG/FINE/FINER/FINEST
在默认情况下只记录前三个级别
记录方法:
logger.warning(message);
logger.fine(message);
or logger.log(Level.FINE, message)
与异常结合使用:可以在异常捕获后,抛出异常之前写日志等等。。。
日志管理器配置:可以通过修改lib/logging.properties 下的配置文件进行日志配置的修改
日志消息本地化:通过资源包实现
处理器:日志记录器将自己的记录发送到自己的处理器和父处理器,可以通过修改配置文件改变处理器的默认行为
过滤器:根据日志记录的级别进行过滤
格式化器:对日志记录中的信息进行格式化
12、调试技巧
a 打印输出任意变量的值(日志或控制台输出)
b 在类中放置main方法
c 单元测试 JUnit
d 日志代理
e 栈堆跟踪
f 错误信息报错到文件中
g 例如java虚拟机查看类的加载过程
h Xlint
i Java虚拟机对Java应用程序进行监控和管理
j jmap实现堆的转储
k 利用-Xprof标志运行Java虚拟机