——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、异常
1、异常的概述和分类
Throwable
Error – 内存溢出、数据库崩溃(修改代码)
Exception
RuntimeException -- 运行期异常(修改代码) -- 如果出现了这些异常,那么一定是你的问题。
非RuntimeException -- 需要异常处理
两种方式:
try...catch
throws
2、JVM默认是如何处理异常的
会将异常名称 + 异常信息 + 异常出现的位置,打印到控制台,然后结束运行。
后面的代码将不能执行到。
3、try...catch的方式处理异常1
try {
// 可能出问题的代码
} catch(异常类名 变量名) {
// 异常处理代码
} finally {
// 必须执行的代码
// 释放资源
}
4、try...catch的方式处理异常2
针对多个异常,一个try多个catch的方式。如果有子父类关系,父类要放到后面。
1.7新特性
try {
// 可能出问题的代码
} catch(异常类名1 | 异常类名2 |... 变量名) { // 不能有子父类关系
// 异常处理代码
}
5、编译期异常和运行期异常的区别
编译期异常必须做异常处理,否则编译报错。
运行期异常可以不做。
6、Throwable的几个常见方法
String getMessage() -- 异常信息
String toString() -- 异常名称 + 异常信息
void printStackTrace() -- 将异常名称 + 异常信息 + 异常出现的位置打印到控制台
7、throws的方式处理异常
throws 声明异常 -- 在方法的声明上 添加 throws + 异常名称
throw 关键字 用在方法体里面,将异常抛出的。 -- throw 异常对象;
8、throw的概述以及和throws的区别
9、finally关键字的特点及作用
除非JVM退出,否则finally里面的代码,不管会不会发生异常,都将执行。
那么如果try或者catch中有return语句,是在return前还是后执行:
在return前。
(如果能表述清楚,可以说下是return中:已经生成一条返回路径,但return语句执行完之前去执行了finally里面的代码,然后接着走了之前的返回路径)
10、finally关键字的面试题
final
修饰类。最终类,不能被继承
修饰方法。最终实现,不能被重写
修饰变量。其实是一个常量,一旦被赋值就不可更改
finally
是异常处理语句结构的一部分,表示总是执行,一般在finally里做释放资源的操作。
finalize()
Object类中定义的方法。在对象变成垃圾时,由对象的垃圾回收器调用此方法。由子类重写,以配置系统资源或执行其他清除。(但基本不用)
11、自定义异常概述和基本使用
实现方式:
自定义一个异常类,继承自Exception。要提供带字符串参数的构造,具体的实现使用父类即可。
如果继承自Exception,必须做异常处理。
如果继承自RuntimeException,可以不必处理。
开发中,一般是继承自RuntimeException。不必要求调用者非要进行异常处理。
12、异常的注意事项及如何使用异常处理
子类重写父类的方法,不能缩小父类的访问权限,不能抛出比父类更多的异常。
如何选择:
原则:能解决就try,不能就throws
如果抛出异常后,后面的代码还需要执行,必须try。
如果抛出异常后,后面的代码不需要执行,可以throws。
13、异常练习 - 键盘录入整数求其二进制表示形式,对非法数据加入异常处理。
二、File类
1、File类的概述和构造方法
File(String pathname)
File(String parent, String filename)
File(File parent, String filename)
2、File类的创建功能
boolean createNewFile() -- 文件
boolean mkdir() -- 单级目录
boolean mkdirs() -- 多级目录
注意:
父目录必须存在。
创建文件还是文件夹,自己要明确。
3、File类的重命名和删除功能
renameTo(File dest)
重命名:
如果是相同目录,重命名。
如果是不同目录,剪切并重命名。
delete()
删除不走回收站。
带子内容的文件夹删除失败。
4、File类的判断功能
exists() -- 是否存在
isFile() -- 是否是文件
isDirectory() -- 是否是文件夹
isAbsolute() -- 是否是绝对路径
canRead() -- 是否可读(windows系统下都可读)
canWrite() -- 是否可写
isHidden() -- 是否隐藏
5、File类的获取功能
String getAbsolutePath() -- 获取绝对路径
String getPath() -- 获取路径
String getName() -- 获取文件或文件夹名称
long length() -- 文件大小
long lastModified() -- 最后修改时间
String[] list() -- 获取目录下所有的文件或者文件夹名称数组
File[] listFiles() -- 获取目录下所有的文件或者文件夹对象数组
6、输出指定目录下指定后缀的文件名
7、文件名称过滤器的概述及使用