Java学习笔记(21)

异常

Error

异常体系最上层的父类:exception

Exception

Throw

异常处理方式

默认处理

自己捕获异常

Try catch

如果try中没有遇到问题,怎么执行?

会把try里面所有的代码全部执行完毕,不会执行catch里面的代码

注意:只有当出现了异常才会执行catch里面的代码

如果try中可能会遇到多个问题,怎么执行?

会写多个catch与之对应

细节:

如果我们要捕获多个异常,这些异常中如果存在父子关系的话,那么父类一定要写在下面

了解性:

在JDK7之后,我们可以在catch中同时捕获多个异常,中间用|进行隔开表示如果出现了A异常或者B异常的话,采取同一种处理方案

如果try中遇到的问题没有被捕获,怎么执行?

相当于try...catch的代码白写了,最终还是会交给虚拟机进行处理。

如果try中遇到了问题,那么try下面的其他代码还会执行吗?

下面的代码就不会执行了,直接跳转到对应的catch当中,执行catch里面的语句体

但是如果没有对应catch与之匹配,那么还是会交给虚拟机进行处理

E.printStackTrance用的最多

如果try中遇到的问题没有被捕获,怎么执行?

相当于try...catch的代码白写了,最终还是会交给虚拟机进行处理。

如果try中遇到了问题,那么try下面的其他代码还会执行吗?

下面的代码就不会执行了,直接跳转到对应的catch当中,执行catch里面的语句体

但是如果没有对应catch与之匹配,那么还是会交给虚拟机进行处理

E.printStackTrance用的最多

都是打印出信息,不会停止程序运行

System.err.println()打印出的是红色字体

E.printStackTrance在底层用的就是这个

抛出处理

核心:告诉调用者出错了,更多写在方法里面

Throws throw

Throw之后

可以用trycatch方法捕获,代码可以继续执行

自定义异常

记得要继承runtimeException 还是写Exception

File类

路径

父级路径 子级路径

File方法

判断、获取

Length

没得看文件的大小

Getpath是返回定义文件时使用的路径,可能会返回绝对路径、相对路径,并不一定就是相对路径。

Getname:返回文件的名字+后缀名,或者是文件夹的名字

创建、删除

Createnewfile

存在文件,创建会失败;创建的一定是一个文件,可以是没有后缀名的文件

父级路径不存在,会报错

Mkdir就创不了多级文件夹

Mkdirs:可以创建单级,或者创多级

Delete不走回收站,不能删除有东西的文件夹,只能删文件,或者是空文件夹

File获取并遍历(最重要)listfiles返回一个file数组

存的是路径下的文件夹和文件

如是空文件夹,返回长度为0的数组

listFiles(FileFilter filter)

重写accept方法,形参是文件的完整路径,过滤出想要的文件

listFiles(FilenameFilter filter)

重写accept方法,形参是父级路径和子级路径,合在一起就是完整路径

不能删除一个带有内容的文件夹

.

public static HashMap<String, Integer> countFile2(File f) {
        //创建hashmap存文件类型和数量
        HashMap<String, Integer> hm = new HashMap<>();
        File[] arr = f.listFiles();
        if (arr != null) {
            for (File file : arr) {
                //判断是不是文件
                if (file.isFile()) {
                    String[] s = file.getName().split("\\.");
                    if (s.length >= 2) {
                        String name = s[s.length - 1];
                        if (hm.containsKey(name)) {
                            int count = hm.get(name);
                            hm.put(name, ++count);
                        } else {
                            hm.put(name, 1);
                        }
                    }
                } else {//文件夹
                    //递归得到
                    Set<Map.Entry<String, Integer>> entries = countFile2(file).entrySet();
                    for (Map.Entry<String, Integer> entry : entries) {
                        if (hm.containsKey(entry.getKey())) {
                            //已存在相同类型的文件,数量叠加
                            hm.put(entry.getKey(), entry.getValue() + hm.get(entry.getKey()));
                        } else {
                            //不存在相同类型的文件
                            hm.put(entry.getKey(), entry.getValue());
                        }
                    }
                }
            }
        }
        return hm;
}

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值