Java进阶【十三期】:【异常处理】 (抛出捕获异常、自定义异常处理)、处理异常的几种方式 & 【(File】文件路径操作、File文件处理的综合练习

Java进阶【十三期】:

异常处理

在这里插入图片描述

一、异常基本介绍

在这里插入图片描述
在这里插入图片描述

二、编译异常和运行异常

在这里插入图片描述
##在这里插入图片描述

三、总结

在这里插入图片描述

异常的作用

在这里插入图片描述

异常的处理方式

在这里插入图片描述

一、JVM默认的处理方式

在这里插入图片描述
在这里插入图片描述

二、自己处理异常

在这里插入图片描述
在这里插入图片描述

自己 处理的问题

在这里插入图片描述
一问答案:
在这里插入图片描述

二问答案:
在这里插入图片描述
三问答案:
在这里插入图片描述
四问答案:
在这里插入图片描述

三、总结

在这里插入图片描述

Throwable 成员方法

在这里插入图片描述
在这里插入图片描述

抛出异常

在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

异常练习

在这里插入图片描述
Girlfriend类

package com.exception;

public class Girlfriend {
    private String name;
    private int age;

    public Girlfriend() {
    }

    public Girlfriend(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) throws RuntimeException{
        int len = name.length();
        if (len < 3 || len > 10) {
            throw new RuntimeException();
        } else {
            this.name = name;
        }
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        if (age < 18 || age > 40) {
            throw new RuntimeException();
        } else {
            this.age = age;
        }
    }

    public String toString() {
        return "Girlfriend{name = " + name + ", age = " + age + "}";
    }
}

测试类

package com.exception;

import java.util.Scanner;

public class ExceptionTest {
    public static void main(String[] MakeFullStack) {
        Girlfriend girlfriend = new Girlfriend();
        Scanner sc = new Scanner(System.in);
        while (true) {
            try {
                System.out.println("请输入女朋友的姓名:");
                String girlName = sc.nextLine();
                girlfriend.setName(girlName);
                System.out.println("请输入女朋友年龄:");
                String string = sc.nextLine();
                int girlAge = Integer.parseInt(string);
                girlfriend.setAge(girlAge);
                break;
            } catch (NumberFormatException e) {
                System.out.println("年龄格式有误!");

            } catch (RuntimeException e) {
                System.out.println("姓名或者年龄不符合规范!");
            }
        }
        System.out.println(girlfriend);
    }
}

自定义异常

在这里插入图片描述

  • 首先我们创建连个自定义异常类,一个是处理名字错误的,一个是处理年龄错误的。

NameFormatException 姓名处理鳄类

package com.exception;

public class NameFormatException extends RuntimeException {
    private String message;
    public NameFormatException() {
    }

    public NameFormatException(String message) {
        // 将用户抛出异常传入的错误信息提交给父类
        super(message);
        this.message = message;
    }

    public String toString() {
        return "NameFormatException:" + this.message;
    }
}

AgeOutOfBoundsException 年龄处理类

package com.exception;

public class AgeOutOfBoundsException extends RuntimeException {
    private String message;
    public AgeOutOfBoundsException() {
    }

    public AgeOutOfBoundsException(String message) {
        // 将用户抛出异常传入的错误信息提交给父类
        super(message);
        this.message = message;
    }

    public String toString() {
        return "AgeOutOfBoundsException:" + message;
    }
}

然后我们的女朋友类中,处理的时候,抛出我们自定义异常处理类即可。

package com.exception;

public class Girlfriend {
    private String name;
    private int age;

    public Girlfriend() {
    }

    public Girlfriend(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) throws RuntimeException{
        int len = name.length();
        if (len < 3 || len > 10) {
            throw new NameFormatException(len + "格式输入有误");
        } else {
            this.name = name;
        }
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        if (age < 18 || age > 40) {
            throw new AgeOutOfBoundsException(age + "年龄超出范围!");
        } else {
            this.age = age;
        }
    }

    public String toString() {
        return "Girlfriend{name = " + name + ", age = " + age + "}";
    }
}

最后,我们的测试类中,捕获异常的时候,同样使用我们的自定义异常处理类

package com.exception;

import java.util.Scanner;

public class ExceptionTest {
    public static void main(String[] MakeFullStack) {
        Girlfriend girlfriend = new Girlfriend();
        Scanner sc = new Scanner(System.in);
        while (true) {
            try {
                System.out.println("请输入女朋友的姓名:");
                String girlName = sc.nextLine();
                girlfriend.setName(girlName);
                System.out.println("请输入女朋友年龄:");
                String string = sc.nextLine();
                int girlAge = Integer.parseInt(string);
                girlfriend.setAge(girlAge);
                break;
            } catch (NumberFormatException e) {
                System.out.println("年龄格式有误!");

            } catch (NameFormatException e) {
                // 输出自定义异常捕获到的错误信息
                e.printStackTrace();
            } catch (AgeOutOfBoundsException e) {
                // 输出自定义异常捕获到的错误信息
                e.printStackTrace();

            }
        }
        System.out.println(girlfriend);
    }
}

File

文件的路径

File 三个 构造方法

在这里插入图片描述
代码示例:
在这里插入图片描述
小结
在这里插入图片描述

File 常见方法

一、File - 判断获取方法

在这里插入图片描述

代码演示
package com.file;

import java.io.File;

public class FileDemo1 {
    public static void main(String [] MakeFullStack) {
        /**
         * File的常见成员方法(判断、获取)
         */

        // 1. isDirectory() 判断 该路径 File 是否为文件夹
        File f11 = new File("E:\\MakeFullStack.txt");
        boolean f11Director = f11.isDirectory();
        System.out.println(f11Director);  // false
        
        File f12 = new File("E:\\MakeItPossible");
        boolean f12Directory = f12.isDirectory();
        System.out.println(f12Directory);  // true

        System.out.println("=====================分界线=====================");

        // 2. isFile() 判断该路径 File 是否为文件
        File f21 = new File("E:\\MakeFullStack.txt");
        boolean f21File = f21.isFile();
        System.out.println(f21File);  // true

        File f22 = new File("E:\\MakeItPossible");
        boolean f22File = f22.isFile();
        System.out.println(f22File);  // false

        System.out.println("=====================分界线=====================");

        // 3. exists () 判断该 路径 File 是否存在
        File f31 = new File("E:\\MakeFullStack.txt");
        boolean f31Exists = f31.exists();
        System.out.println(f31Exists); // true

        File f32 = new File("E:\\MakeItPossible");
        boolean f32Exists = f32.exists();
        System.out.println(f32Exists);  // true

        System.out.println("=====================分界线=====================");

        // 4. length() 返回文件的大小(字节数量)
        File f41 = new File("E:\\MakeFullStack.txt");
        long f41Length = f41.length();
        System.out.println(f41Length);  //  13

        File f42 = new File("E:\\MakeFullStack");
        long f42Length = f42.length();
        System.out.println(f42Length);  //  0

        System.out.println("=====================分界线=====================");

        // 5. getAbsolutePath() 返回文件的绝对路径
        File f51 = new File("E:\\MakeFullStack.txt");
        String f51Path = f51.getAbsolutePath();
        System.out.println(f51Path);  // E:\MakeFullStack.txt

        File f52 = new File("E:\\MakeItPossible");
        String f52Path = f52.getAbsolutePath();
        System.out.println(f52Path);  // E:\MakeItPossible

        System.out.println("=====================分界线=====================");

        // 6. getPath() 返回文件使用的路径
        File f61 = new File("E:\\MakeFullStack.txt");
        String f61Path = f61.getPath();
        System.out.println(f61Path);  // E:\MakeFullStack.txt

        File f62 = new File("E:\\MakeItPossible");
        String f62Path = f62.getPath();
        System.out.println(f62Path);  // E:\MakeItPossible

        System.out.println("=====================分界线=====================");

        // 7. getName() 返回文件的名称,带后缀
        File f71 = new File("E:\\MakeFullStack.txt");
        String f71Name = f71.getName();
        System.out.println(f71Name);  // MakeFullStack.txt

        File f72 = new File("E:\\MakeItPossible");
        String f72Name = f72.getName();
        System.out.println(f72Name);  // MakeItPossible (这是个文件,没以后后缀)

        System.out.println("=====================分界线=====================");

        // 8. lastModified() 返回文件最后的修改时间(时间戳毫秒)
        File f81 = new File("E:\\MakeFullStack.txt");
        long f81LatsTime = f81.lastModified();
        System.out.println(f81LatsTime);  // 1714669081566

        System.out.println("=====================分界线=====================");
    }
}

二、File - 创建和删除方法

在这里插入图片描述

代码示例
package com.file;

import java.io.File;
import java.io.IOException;

public class FileDemo2 {
    public static void main(String[] MakeFullStack) throws IOException {
        /**
         * File 的常见成员方法(创建、删除)
         */

        // 1. createNewFile() 创建一个新的空文件夹
        File f1 = new File("E:\\MakeCode.txt");
        boolean newFile = f1.createNewFile();
        System.out.println(newFile);  // true

        System.out.println("============================================");

        // 2. mkdir() 创建单级文件夹
        File f2 = new File("E:\\aaa");
        boolean mkdir = f2.mkdir();
        System.out.println(mkdir);  // true

        System.out.println("============================================");

        // 3. mkdirs() 创建多级文件夹
        File f3 = new File("E:\\BBB\\CCC");
        boolean mkdirs = f3.mkdirs();
        System.out.println(mkdirs);   // true

        System.out.println("============================================");

        // 4. delete() 删除文件、空文件夹
        File f4 = new File("E:\\aaa");
        boolean delete = f4.delete();
        System.out.println(delete);  // true

        File f5 = new File("E:\\MakeCode");
        boolean delete1 = f5.delete();
        System.out.println(delete1);  // true
    }
}

三、File - 获取并遍历

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

File - 综合练习

练习一、

在这里插入图片描述

练习二、

在这里插入图片描述
在这里插入图片描述

练习三、

在这里插入图片描述
在这里插入图片描述

练习四、

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

练习五、

  • 统计一个文件夹总大小
    在这里插入图片描述

在这里插入图片描述

练习六、

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脱发使我稳重

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值