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

news2025/1/12 1:52:51

文章目录

  • Java进阶【十三期】:
  • 异常处理
      • 一、异常基本介绍
      • 二、编译异常和运行异常
      • 三、总结
    • 异常的作用
    • 异常的处理方式
      • 一、JVM默认的处理方式
      • 二、自己处理异常
          • 自己 处理的问题
      • 三、总结
    • Throwable 成员方法
    • 抛出异常
      • 总结
    • 异常练习
    • 自定义异常
  • File
    • File 三个 构造方法
    • File 常见方法
      • 一、File - 判断获取方法
          • 代码演示
      • 二、File - 创建和删除方法
          • 代码示例
      • 三、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 - 综合练习

练习一、

在这里插入图片描述

练习二、

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

练习三、

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

练习四、

在这里插入图片描述

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

练习五、

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

在这里插入图片描述

练习六、

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1641803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SSM进阶学习系列丨分页篇】PageHelper 分页插件导入集成实践

文章目录 一、说明什么是分页PageHelper介绍 二、导入依赖三、集成Spring框架中四、编写Service五、编写Controller六、编写queryAllByPage页面展示数据 一、说明 什么是分页 ​ 针对分页&#xff0c;使用的是PageHelper分页插件&#xff0c;版本使用的是5.1.8 。 ​ 参考文档…

力扣hot100:543. 二叉树的直径/108. 将有序数组转换为二叉搜索树

一、543. 二叉树的直径 LeetCode&#xff1a;543. 二叉树的直径 二叉树的直径 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。 遇到二叉树的问题很容易去直接用求解的目标去定义递归函数。但是仔细考虑&#xff0c;返回树的直径并不能向上传播。因此我们可以拆…

三维球体空间中光线反射模拟与三维点云提取matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 三维球体空间中光线反射模拟与三维点云提取matlab仿真。设置一个三维的椭球模型&#xff0c;作为墙壁&#xff0c;然后根据光线的反射原理&#xff0c;设计三维空…

Linux内核--设备驱动(四)基础通信接口整理

目录 一、引言 二、I2C ------>2.1、虚拟总线 ------>2.2、I2C适配器序列号指定 ------>2.3、I2C驱动的注册 ------>2.4、I2C设备的创建及注册 ------>2.5、probe 三、I2S 四、DMA ------>4.1、MMU IOMMU 一、引言 本篇文章对于常见通讯接口的内…

华为OD机试 - 小扇和小船的数字游戏 - 二进制(Java 2024 C卷 200分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

题目:方格取数[Easy]

问题描述&#xff1a; 解题思路&#xff1a; 可以使用动态规划&#xff0c;建立dp[i][j][x]&#xff0c;表示&#xff08;1&#xff0c;1&#xff09;到&#xff08;i&#xff0c;j&#xff09;且其积的余数为x的情况下的方案数。时间复杂度为(n^2) * k。 AC代码&#xff1a; …

零基础学习数据库SQL语句之查询表中数据的DQL语句

是用来查询数据库表的记录的语句 在SQL语句中占有90%以上 也是最为复杂的操作 最为繁琐的操作 DQL语句很重要很重要 初始化数据库和表 USE dduo;create table tb_emp(id int unsigned primary key auto_increment comment ID,username varchar(20) not null unique comment…

USB2.0和USB3.0识别方式

一. USB2.0识别方式 USB2.0向下兼容USB1.0和USB1.1&#xff0c;分为低速、全速和高速三种模式。 1. 全速和低速识别 根据规范&#xff0c;全速和低速通过设备端的上拉电阻进行区分。当设备插入HUB或上电时&#xff0c;有上拉电阻的那根数据线就会被拉高&#xff0c;HUB根据D…

StampedLock(戳记锁)源码解读与使用

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java源码解读-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 1. 前言 我们在上一篇写ReentrantReadWriteLock读写锁的末尾留了一个小坑&#…

【Anaconda 3 】Jupyter Notebook 的安装配置及使用

Jupyter Notebook 的安装配置及使用 一、引言 Jupyter Notebook 是一种交互式笔记本&#xff0c;它允许用户将代码、注释、方程式、可视化内容等整合到一个文档中&#xff0c;并支持多种编程语言&#xff0c;如 Python、R、Julia 等。它在数据科学、机器学习和教育领域中得到…

ResponseHttp

文章目录 HTTP响应详解使用抓包查看响应报文协议内容 Response对象Response继承体系Response设置响应数据功能介绍Response请求重定向概述实现方式重定向特点 请求重定向和请求转发比较路径问题Response响应字符数据步骤实现 Response响应字节数据步骤实现 HTTP响应详解 使用抓…

Pytorch分布式train——pytorch.distributed.launch V.S. torchrun

1. 较早的pytorch.distributed.launch python -m torch.distributed.launch --nproc_per_node4 --nnodes1 --node_rank0 train.py --args XXX 参数解析&#xff1a; nnodes&#xff1a;节点&#xff08;主机&#xff09;的数量&#xff0c;通常一个节点对应一个主机 node_rank…

K8S哲学 - 资源调度 HPA (horizontal pod autoScaler-sync-period)

kubectl exec&#xff1a; kubectl exec -it pod-name -c container-name -- /bin/sh kubectl run 最小2个node 最大5个

Qt QImageWriter类介绍

1.简介 QImageWriter 用于写入图像文件的类。它提供了将 QImage 对象保存到不同图像格式文件的功能&#xff0c;包括但不限于 PNG、JPEG、BMP 等。QImageWriter 可以将图像写入文件&#xff0c;也可以写入任何 QIODevice&#xff0c;如 QByteArray&#xff0c;这使得它非常灵活…

恶补《操作系统》5_1——王道学习笔记

5设备管理 5.1_1 I-O设备的概念和分类 1、什么是I-O设备 输入/输出&#xff1a;I/O设备就是可以将数据输入到计算机&#xff0c;或者可以接收计算机输出数据的外部设备&#xff0c;属于计算机中的硬件部件。 2、按使用特性分类 人机交互的外部设备存储设备网络通信设备 3、…

io流,字节流概述

io流概述 io流&#xff1a;输入输出流读写数据的 i 指Input&#xff0c;称为输入流:负责把数据读到内存中去 o指Output&#xff0c;称为输出流:负责写数据出去 io流的分类 按流的方向分为: 输入流和输出流。 按流中数据的最小单位&#xff0c; 分为:字节流&#xff08;适合操作…

LWIP+TCP客户端

一、TCP API函数 其中tcp_poll()函数的第三个参数表示隔几秒调用一次这个周期性函数 二、修改服务器的IP 三、TCP客户端编程思路 申请套接字绑定服务器IP和端口号等待客户端连接 进入连接回调函数在连接回调函数中 配置一些回调函数&#xff0c;如接收回调函数&#xff0c;周期…

C++必修:类与对象(三)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. 隐式类型转换 在学习C语言时我们就明白&#xff0c;当我们进行赋值时&#xf…

智慧旅游引领旅游行业创新发展:借助智能科技的力量,实现旅游资源的优化配置和高效利用,推动旅游行业的转型升级和可持续发展

目录 一、引言 二、智慧旅游的定义与特点 1、信息化程度高 2、智能化服务丰富 3、互动性强 4、个性化服务突出 5、可持续性发展 三、智慧旅游在旅游行业创新发展中的作用 &#xff08;一&#xff09;优化旅游资源配置 &#xff08;二&#xff09;提升旅游服务质量 &…

vue3 jspdf,element table 导出excel、pdf,横板竖版分页

多个表格需要&#xff0c;pdf需要的格式与原本展示的表格样式不同 1.创建一个新的表格&#xff0c;设置pdf需要的样式&#xff0c;用vue的h函数放入dom中 2.excel用xlxs插件直接传入新建el-table的dom,直接导出 3.pdf导出类似excel黑色边框白底黑字的文件&#xff0c;把el-t…