1.异常
1.需要掌握:
1.如何处理异常
2.如何自定义一个异常
2.异常的体系:
Throwable
|-Error(不用管)
|-Exception(异常)
|-RuntimeException(运行时异常)
|-其他(编译时异常)
3.JVM默认如何处理异常:(了解)
把异常信息打印到控制台,然后停止程序.
4.异常处理:
1.一次处理一个异常
try{
可能会出现异常的内容.
}catch(NullPointException e){
对异常进行处理.(学习阶段,这里一般是打印异常信息)
}
2.一次处理多个异常:(掌握)
try{
可能会出现异常的内容.
}catch(异常1 e){
发生第一种异常时的处理方式.
}catch(异常2 e2){
发生第二种异常时的处理方式.
}....
JDK1.7新特性: 一次同时处理多个异常(了解)
try{
可能会出现异常的内容.
}catch(异常1 | 异常2 | 异常3... e){
发生异常时的处理方式.
}
注意事项:
如果多个异常对象存在子父类关系,子类在前面,父类在后面.
3.编译时异常和运行时异常的区别:
1.编译时异常:
必须要显式处理,不处理不能编译通过
2.运行时异常:
可以不用做任何处理.都能通过编译!
3.如何区分是什么异常:
1.写代码时,如果报错,不让编译通过,那就是编译时异常,否则是运行时异常
2.看父类, 如果父类是RuntimeException,就是运行时异常,否则是编译时异常.
4.异常中的常用方法:
1.getMessage(): 获取的是异常的信息(从构造方法中传入的信息)
2.toString(): 获取的是异常的类名和异常信息
3.printStackTrace(): 把异常的类名,信息,位置打印在控制台上.
5.异常的应用:
1.在定义方法时,可以在满足一定条件的时候,通过throw关键字抛出一个异常对象.
当抛出的异常对象是编译时异常,必须要在方法上通过throws关键字声明该异常的类型
如果抛出的异常对象是运行时异常, 可以不用在方法上做任何声明.
2.在调用一个抛出了异常的方法时,如果抛出的是编译时异常,必须要对该异常进行处理,否则编译不能通过
如果抛出的是运行时异常,可以不用处理该异常.
6.throw和throws的区别:
throw 用在方法中,抛出的是异常对象,而且只能抛出一个.
throws 用在方法声明上,抛出的是异常的类名, 而且可以抛出多个,用逗号隔开.
7.finally的用法:
finally关键字必须要跟 try 或者 try catch 一起用
修饰的是一个代码块, 被修饰的代码块一定会执行到.(除了JVM已经退出的情况)
8.面试题:
1.final finally finalize 三个的区别:
final 可以修饰类,变量,方法 特点....
finally 是try catch 语句中的一部分, 不可以单独使用, 被它修饰的代码块是一定会执行的.
finalize是Object中的一个方法, 在对象被垃圾回收器回收时调用.
2.finally代码块是在return前还是return后执行?
return 语句先建立返回路径, 然后执行finally代码块中的内容,再把返回路径中的内容执行完毕.
不要在finally代码块中写return语句 , 否会导致其他return语句无效!
9.如何自定义一个异常
1.步骤:
1.先定义一个类,继承Exception或者RuntimeException (必须的)
2.定义空参构造和有参构造,把参数传递给父类. (可选)
2.为什么要自定义异常:
1.可以通过类名就知道异常发生的原因
2.可以根据异常的类型不同,做针对性的处理.
10.异常的注意事项:
1.在重写父类中的方法时
如果父类没有抛出异常, 子类不能抛出异常, 只能try catch 处理
如果父类抛出了异常, 子类可以抛出相同的,或者该异常的子类.
2.异常的处理原则:
1.如果该异常产生时,不会影响到后面代码的正常运行, 可以try catch 处理该异常
2.如果该异常的发生,会影响到后面代码的正常运行,不要处理这个异常,可以通过throws抛出去.
2.File类
1.代表的是一个路径!
当这个路径指向的是一个文件的时候,它就可以操作该文件
当这个路径指向的是一个文件夹的时候,它就可以操作该文件夹!
2.构造方法:
File(String): 根据路径创建一个File对象
File(String parent,String child): 当前File对象的路径是: parent+child
File(File parent,String child): 当前File对象的路径是: parent+child
两个参数的构造方法,第二个参数不能是绝对路径!!!
3.路径:
相对路径: 不带盘符的路径
绝对路径: 带盘符的路径
4.常用功能:
1.创建功能:
createNewFile(): 创建一个文件
mkdir(): 创建一个文件夹
mkdirs(): 创建多级目录(推荐在开发时使用)
2.删除和重命名功能:
delete(): 可以删除文件和文件夹(在删除文件夹的时候,文件夹必须是空的)
删除是不经过回收站
renameTo(File): 如果两个File对象是在同一路径下,就是改名
如果不在同一个路径,就是改名并剪切.
3.判断功能:
exists(): 判断文件或者文件夹是否存在
isFile(): 判断是否是文件
isDirectory(): 判断是否是文件夹
canRead(): 是否可读
canWrite(): 是否可写
isHidden(): 是否隐藏
4.获取功能:
getName(): 获取文件名
getPath(): 获取构造方法中传入的路径
getAbslutePath(): 获取绝对路径
length(): 获取文件的字节大小(不能获取文件夹的大小)
list(): 获取当前文件夹中的所有文件或者文件夹的名字,返回的是一个String[]
listFiles(): 获取的是文件夹中的所有文件和文件夹的对象,返回的是File[]
lastModified(): 获取的是文件的最后一次修改时间的毫秒值.
5.文件名过滤器(掌握)
FilenameFilter 接口
accept(File dir,String name);
|
|