java基础笔记之异常和File类


----自己总结写的,写的不好,请多指点
知识点:
一般会把字符串放在equals前面,防止空指针异常
异常:
分类:
throwable:
Error :服务器宕机,数据库崩溃
Exception: //常说的异常
编译期异常: 非RuntimeException及其子类
运行期异常: RuntimeException及其子类
Throwable成员方法:
public String getMessage(); //获取异常信息
public String toString(); //获取异常类型,异常信息
public void printStackTrace(); //获取异常类型,异常信息,以及异常出现的位置.
处理异常的两种方式:
  1:try…catch…finally//解决完程序会继续执行
try:用来检测异常的
catch:用来捕获异常
finally:释放异常
格式1:处理一个异常
try{
//可能出问题的代码;
}catch(异常类型 变量名) {
//出问题后的解决方案
}finally{
//释放资源
}

格式2:处理多个异常
try{
//可能出问题的代码;
}catch(异常类型1 变量名) {
//出问题后的解决方案
}catch(异常类型2 变量名) {
//出问题后的解决方案
}catch(异常类型3 变量名) {
//出问题后的解决方案
}finally{
//释放资源
}
注意:try跟多个catch,小的放前面,大的必须放后面.
原因:根据多态的原理,大的放前面,就会将所有的子类对象接收,后面的就没意义

格式3: 实际开发的写法
try {
//可能出问题的代码
} catch (Exception e) {
e.printStackTrace();
} finally {
//释放资源的
}
finally 关键字:
作用: 一般是用来释放资源的.
特点: 正常情况: 里边的代码一定会执行.
特殊情况: 还没有执行到finally里边的代码时,JVM已经退出了.

 B:throws
如果抛出的是 编译期异常 , 调用者必须处理.
如果抛出的是 运行时异常 , 调用者可以不用显示处理 .
自定义异常:
其实就是我们自定义一个类去继承Exception或者RuntimeException.
然后自动生成下 构造方法即可.

注意事项:
1: 子类不能出现父类没有的异常.
2: 父类如果没有异常,子类有异常只能try,不能抛.
3: 关于异常的处理,能try就try,try不了就抛.

File类:
概述: 用来操作文件(夹), 其实严格来讲, 它是用来操作 路径的.
路径的分类:
绝对路径: 以盘符开头的路径,是一个固定的,写"死"的路径.
相对路径: 相对于某个路径而言. 一般是相对于当前项目来讲的.

构造方法:
public File(String name);//根据一个路径得到File对象
public File(String parent,String child);//:根据一个目录和一个子文件/目录得到File对象
public File(File parent,String child);//根据一个父File对象和一个子文件/目录得到File对象
File类成员方法:
A:创建功能
    * public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
//返回值是boolean值,如果没有就创建,返回true

    * public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了返回值是boolean值,如果没有就创建,返回true
    * public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
返回值是boolean值,如果没有就创建,返回true

    * 注意事项:
        * 如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。

 B:重命名和删除功能
     * public boolean renameTo(File dest):把文件重命名为指定的文件路径
* public boolean delete():删除文件或者文件夹
B :重命名注意事项:
    * 如果路径名相同,就是改名。
    * 如果路径名不同,就是改名并剪切。
*  C:删除注意事项:
    * Java中的删除不走回收站。
    * 要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹

C:判断功能
      * public boolean isDirectory():判断是否是目录
    * public boolean isFile():判断是否是文件
    * public boolean exists():判断是否存在
    * public boolean canRead():判断是否可读
    * public boolean canWrite():判断是否可写
    * public boolean isHidden():判断是否隐藏

 D:获取功能
      * public String getAbsolutePath():获取绝对路径
    * public String getPath():获取构造方法中的,一般获取相对路径路径
    * public String getName():获取名称
    * public long length():获取长度。字节数
    * public long lastModified():获取最后一次的修改时间,毫秒值
    * public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
     * public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组 
File[] dirFiles = file.listFiles( new FilenameFilter() {//文件过滤器
@Override
public boolean accept(File dir, String name) {
File newFile =new File(dir,name);
return newFile.isFile()&&newFile.getName().endsWith(".jpg");
}
});
面试题:
记忆:
1.try跟多个catch,小的放前面,大的必须放后面.
2.jdk1.7新特性,多个catch语句里面的异常类型合并成一个
3.try 执行后,后面的程序会执行,throw抛出异常后面的语句不会执行

1.main是怎么处理异常的?
方式一:自己处理,程序继续运行
方式二:交给JVM处理,,JVM有一个默认的异常处理异常机制,会将异常信息,异常名称,一场出现的
2.编译期异常和运行期异常的区别?
编译时异常: 必须显示处理,否则程序就会发生错误,无法通过编译
运行时异常:  无需显示处理
3.throws和throw的区别?
throws
        * 用在方法声明后面,跟的是异常类名
        * 可以跟多个异常类名,用逗号隔开
        * 表示抛出异常,由该方法的调用者来处理
 throw
        * 用在方法体内,跟的是异常对象名
        * 只能抛出一个异常对象名
        * 表示抛出异常,由方法体内的语句处理
  4.如果没有finally,后面的代码也会执行,那么finally有和没有的区别是什么?(假设finally一定会执行的正常情况下)?
如果catch中有return语句,finally里边的代码也会执行,如果不加finally,代码是执行不了的.
5: final,finally,finalize 三者的区别是什么?
final:
用来修饰类,成员方法,成员变量的.修饰的类不能被继承,但是可以继承别的类,
修饰的方法不能被子类重写,修饰的变量是一个常量.
finally:
是try-catch-finally语句体的一部分,一般是用来释放资源的,正常情况下,里边的代码肯定会执行.
finalize:
它是Object类中的一个方法,当对象变成垃圾的时候,由GC来调用该对象的finalize()方法回收对象.
6: 异常的处理方式有几种,他们的区别是什么?
try-catch-finally: 处理完后,程序会继续执行.
throws:处理完后,程序会终止运行.




一个关于"异常"的经典的题:
public static void main(String[] args) {
System.out.println(method()); //打印结果是多少?
}
public static int method() {
int num = 10;
try {
System.out.println(1/0);
} catch (Exception e) {
num = 20;
return num; //return做了两件事情,第一:先创建一个返回路径,记录住要返回的值,
//这个时候,检测到还有finally,所以会去执行下finally里边的内容,
//执行完finally里边的内容后,会将之前返回路径记录住的值返回
}finally {
num = 30;
System.out.println("我执行了吗?");
}
return num;
}

结果:num=20
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值