其他知识点的相关链接:
相关知识点
-
异常分类
-
Error层次结构的内容
-
派生于RuntimeException的异常情况包括
-
不是派生RuntimeException的异常情况有
-
什么是受查异常,什么是非受查异常
-
什么时候应该抛出异常
-
若没有声明所有受查异常,编译器会发生什么
-
子类覆盖超类的一个方法,则子类方法中声明的受查异常和超类方法中声明的受查异常的关系
-
如何抛出异常
-
如何创建异常类
-
如何获取异常本省的信息
-
捕获多个异常时,异常变量隐含为什么类型变量
-
catch自己中抛出一个异常的目的是什么?
-
如何获得原始异常
-
会执行finally子句的情况有?
-
若finally中含有return返回值,则会发生什么情况
-
StackTraceElement类包含的内容?
-
如何产生所有线程的堆栈轨迹
-
使用异常机制的技巧?
-
断言关键字的形式有?
-
如何启用和禁用断言
-
处理系统错误的机制有?
-
记录日志API的优点
-
如何生成简单的日志记录
-
日志记录器级别
-
调试技巧
知识点解答
1.异常分类
2.Error层次结构的内容
描述了Java运行时系统的内部错误和资源耗尽错误
3.派生于RuntimeException的异常情况包括
- 错误的类型转换
- 数组越界
- 访问null指针
4.不是派生RuntimeException的异常情况有
- 试图在文件尾部后面读取数据
- 试图打开一个不存在的文件
- 试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在
5.什么是受查异常,什么是非受查异常
将派生于Error和RuntimeException类的所有异常都称为非受查异常
其他的异常称为受查异常
6.什么时候应该抛出异常
- 调用一个抛出受查异常的方法
- 程序运行过程中发现错误,并且利用throw语句抛出一个受查异常
- 程序出现错误
- Java虚拟机和运行时库出现的内如错误
7.若没有声明所有受查异常,编译器会发生什么
编译不通过
8.子类覆盖超类的一个方法,则子类方法中声明的受查异常和超类方法中声明的受查异常的关系
子类方法中声明的受查异常不能比超类方法中声明的异常更通用,如果超类中没有抛出任何受查异常,子类也不能抛出任何受查异常
9.如何抛出异常
//method 1
throw new EOFException();
//method 2
EOFException e = new EOFException();
throw e;
10.如何创建异常类
定义一个派生于Exception的类,或派生于Exception子类的类
class FileFormatException extends Exception{
public FileFormatException(){}
public FileFormatException(String gripe){
super(gripe);
}
}
11.如何获取异常本身的信息?
e.getMessage();
e.getClass().getName();
12.捕获多个异常时,异常变量隐含为什么类型变量?
final
13.catch自己中抛出一个异常的目的是什么?
改变异常类型
14.如何获得原始异常?
Throwable e = se.getCause();
15.会执行finally子句的情况有?
- 代码没有抛出异常
- 抛出一个在catch自己中捕获的异常
- 代码抛出了一个异常,但这个异常不由catch子句捕获
try语句可以只有finall语句没有catch语句
16.若finally中含有return返回值,则会发生什么情况?
会覆盖try语句块中的return
17.StackTraceElement类包含的内容?
文件名和当前执行的代码行号的方法
18.如何产生所有线程的堆栈轨迹?
Thread.getAllStackTrace()方法
19.使用异常机制的技巧?
- 异常处理不能代替简单的测试
- 不要过分地细化异常
- 利用异常层次结构
- 不要压制异常
- 在检测错误时,”苛刻“要比放任更好
- 不要羞于传递异常
20.断言关键字的形式有?
//method 1
assert 条件;
//method 2
assert 条件:表达式;
21.如何启用和禁用断言?
//启用断言
java -enableassertions MyApp
//禁用断言
java -ea:...-da:MyClass MyApp
22.处理系统错误的机制有?
- 断言失败是致命的、不可恢复的错误
- 断言检查只用于开发和测试阶段
不允许用null数组调用这个方法,并在这个方法的开头使用断言
assert a != null
23.记录日志API的优点?
- 可以很容易地取消全部日志记录,或者仅仅取消某个级别的日志,而且打开和关闭这个操作也很容易
- 可以简单地禁止日志记录的输出,因此,将这些日志代码留在程序中的开销很小
- 日志记录可以被定向到不同的处理器,用于在控制台中显示,用于存储在文件中等
- 日志记录器和处理器都可以对记录进行过滤。过滤器可以根据过滤实现器制定的标准丢弃那些无用的记录项
- 日志记录可以采用不同的方式格式化
- 应用程序可以使用多个日志记录器,它们使用类似包名的这种具有层次结构的名字
- 在默认情况下,日志系统的配置由配置文件控制
24.如何生成简单的日志记录?
全局日志记录器,并调用其info方法
Logger.getGlobal().info("File->Open menu item selected");
25.日志记录器级别?
SERVER
WARNING
INFO
CONFIG
FINE
FINER
FINEST
默认情况下值记录前三个级别