关于vi设计的网站/最近最新的新闻

关于vi设计的网站,最近最新的新闻,想要接网站业务如何做,做推广网站文章目录 1. 异常处理与优化1.1 在文件操作中使用 try-catch1.2 try-with-resources 语法1.3 使用 finally 块关闭资源1.4 代码健壮性与优化 2. 实践任务2.1 改进思路2.2 示例改进要点2.3 检查点 3. 总结3.1 改进后的完整代码: 4. 今日生词 今日学习目标&#xff1a…

文章目录

  • 1. 异常处理与优化
    • 1.1 在文件操作中使用 `try-catch`
    • 1.2 `try-with-resources` 语法
    • 1.3 使用 `finally `块关闭资源
    • 1.4 代码健壮性与优化
  • 2. 实践任务
    • 2.1 改进思路
    • 2.2 示例改进要点
    • 2.3 检查点
  • 3. 总结
    • 3.1 改进后的完整代码:
  • 4. 今日生词

今日学习目标:
第 6 天:异常处理与优化
学习内容
在文件操作中使用 try-catch 处理异常:
try-with-resources 语法(try (BufferedReader br = new BufferedReader(new FileReader(“test.txt”)))。
优化文件操作代码,提高健壮性:
使用 finally 关闭资源,避免内存泄漏。
实践任务
改进前一天的文件管理工具:
处理异常,如 IOException 和 FileNotFoundException。
使用 try-with-resources 确保资源关闭。

1. 异常处理与优化

1.1 在文件操作中使用 try-catch

  • 基本结构
try {// 可能抛出异常的代码
} catch (IOException e) {// 对 IOException 的处理
}
  • 常见异常类型
    • FileNotFoundException:当要读取的文件不存在时抛出
    • IOException:文件读写过程中的其他 I/O 异常
  • 使用场景
    • 在文件读取(如 FileReaderBufferedReader)时捕获 IOException
    • 在文件写入(如 FileWriterBufferedWriter)时捕获 IOException

1.2 try-with-resources 语法

  • 语法示例
try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {String line;while ((line = br.readLine()) != null) {System.out.println(line);}
} catch (IOException e) {e.printStackTrace();
}
  • 优势
    • 自动关闭资源:try-with-resources 块结束时,Java 会自动调用资源的close()方法
    • 代码更简洁:省去显式的 finally 块来关闭流

1.3 使用 finally 块关闭资源

  • 传统方式
BufferedReader br = null;
try {br = new BufferedReader(new FileReader("test.txt"));// 文件读取操作
} catch (FileNotFoundException e) {e.printStackTrace();
} catch (IOException e) {e.printStackTrace();
} finally {if (br != null) {try {br.close();} catch (IOException e) {e.printStackTrace();}}
}
  • 适用场景
    • 在无法使用 try-with-resources 的情况(例如,Java 版本限制)
    • 需要在finally块中进行其他清理操作时

1.4 代码健壮性与优化

1.捕获并分类处理异常

  • 将不同异常类型分开处理或给予不同提示,便于用户理解问题所在
    2.提供用户友好提示
  • 异常信息中应包含具体原因,方便排查问题
    3.减少重复代码
  • 将重复的异常处理逻辑提取到方法中,或使用工具类封装

2. 实践任务

改进前一天的文件管理工具

  • 处理异常,如 IOExceptionFileNotFoundException
  • 使用 try-with-resources 确保资源关闭

2.1 改进思路

1.使用try-with-resources替换原有的 try-catch-finally

  • 在读取文件 (readFile) 和写入文件 (writeFile) 方法中,使用 try-with-resources 自动关闭流。
    2.更加细化的异常捕获
  • 在文件读取时分别捕获 FileNotFoundException(若文件不存在,给出提示)
  • 捕获 IOException(若读写出错,也能给出相应提示)
    3.保持程序逻辑不变
  • 依然允许用户创建文件、读取内容、修改内容后保存等操作,只是让异常处理更健壮。

2.2 示例改进要点

  • 示例:readFile(File file) 方法
public static void readFile(File file) {// try-with-resources 会自动关闭 BufferedReadertry (BufferedReader reader = new BufferedReader(new FileReader(file))) {String line;while ((line = reader.readLine()) != null) {System.out.println(line);}} catch (FileNotFoundException e) {System.out.println("文件未找到: " + e.getMessage());} catch (IOException e) {System.out.println("读取文件失败: " + e.getMessage());}
}
  • 示例:writeFile(File file, String content) 方法
public static void writeFile(File file, String content) {// 同样使用 try-with-resourcestry (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {writer.write(content);System.out.println("文件已保存。");} catch (IOException e) {System.out.println("写入文件失败: " + e.getMessage());}
}
  • 在其他需要文件操作的地方也可类比使用

2.3 检查点

1.测试文件不存在的情况

  • 输入一个不存在的路径,看是否能提示“文件未找到”,并在用户选择创建后正常创建。
    2.测试文件读取失败情况
  • 例如手动给文件设置只读,或放在不可访问的目录下,是否能捕获 IOException。
    3.测试修改保存功能
  • 修改文件内容后保存,看是否正确写入且资源关闭无误。

3. 总结

  • 通过使用 try-catchtry-with-resources 以及 finally
    你可以有效地处理文件读写过程中出现的各种异常,并确保资源得到正确释放。
  • 改进后的文件管理工具更健壮
    当用户输入了错误路径或在读写文件时遇到问题时,程序能给出清晰的提示,并且不会造成资源泄漏。
  • 后续学习方向
  • 更深入的异常体系:自定义异常、异常链等
  • 更复杂的文件操作:如多线程读写、大文件分块处理等

3.1 改进后的完整代码:

import java.io.*;
import java.util.Scanner;public class FileManager {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入文件路径:");String filePath = scanner.nextLine();File file = new File(filePath);if (file.exists()) {// 文件存在,读取并显示内容System.out.println("文件存在,内容如下:");readFile(file);System.out.println("是否需要修改文件内容? (yes/no)");String response = scanner.nextLine();if (response.equalsIgnoreCase("yes") || response.equalsIgnoreCase("y")) {System.out.println("请输入新的内容(输入单独一行 exit 表示结束):");String newContent = readMultilineInput(scanner);writeFile(file, newContent);} else {System.out.println("不修改文件内容,程序结束。");}} else {// 文件不存在,询问是否创建新文件System.out.println("文件不存在,是否创建新文件? (yes/no)");String response = scanner.nextLine();if (response.equalsIgnoreCase("yes") || response.equalsIgnoreCase("y")) {// 检查并创建父目录File parentDir = file.getParentFile();if (parentDir != null && !parentDir.exists()) {if (parentDir.mkdirs()) {System.out.println("父目录创建成功。");} else {System.out.println("父目录创建失败,请检查路径和权限。");}}try {if (file.createNewFile()) {System.out.println("文件创建成功。");System.out.println("请输入要写入文件的内容(输入单独一行 exit 表示结束):");String content = readMultilineInput(scanner);writeFile(file, content);} else {System.out.println("文件创建失败或文件已存在。");}} catch (IOException e) {System.out.println("文件创建失败: " + e.getMessage());}} else {System.out.println("未创建文件,程序结束。");}}scanner.close();}// 方法:使用 try-with-resources 读取文件内容并显示到控制台public static void readFile(File file) {try (BufferedReader reader = new BufferedReader(new FileReader(file))) {String line;System.out.println("------ 文件内容开始 ------");while ((line = reader.readLine()) != null) {System.out.println(line);}System.out.println("------ 文件内容结束 ------");} catch (FileNotFoundException e) {System.out.println("文件未找到: " + e.getMessage());} catch (IOException e) {System.out.println("读取文件失败: " + e.getMessage());}}// 方法:使用 try-with-resources 将内容写入文件public static void writeFile(File file, String content) {try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {writer.write(content);System.out.println("文件已保存。");} catch (IOException e) {System.out.println("写入文件失败: " + e.getMessage());}}// 方法:读取多行输入,以单独一行 "exit" 作为结束标识public static String readMultilineInput(Scanner scanner) {StringBuilder content = new StringBuilder();String line;while (!(line = scanner.nextLine()).equals("exit")) {content.append(line).append(System.lineSeparator());}return content.toString();}
}
  • 代码改进要点
    1.父目录创建
    在创建新文件前,先判断文件的父目录是否存在,若不存在则调用 parentDir.mkdirs() 创建多级目录,确保路径正确。

2.使用 try-with-resources
在读取与写入文件时都使用 try-with-resources 语法,确保在操作完成后自动关闭流,避免资源泄漏。

3.异常细化处理
分别捕获 FileNotFoundException 和 IOException,为用户提供更清晰的错误提示。

4. 今日生词

1.bacteria 2.motivate 3.ingredient 4.commercial 5.penalty

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

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

相关文章

C# WPF 基础知识学习(二)

四、数据绑定 (一)数据绑定基础 绑定源和目标:数据绑定建立了 UI 元素(绑定目标)属性与数据源(绑定源)之间的联系。例如,将一个TextBox的Text属性绑定到一个对象的某个属性上。绑定…

Trae AI IDEA安装与使用

文章目录 背景第一步、下载安装第二步、登录与使用优势异常处理 背景 最近比较热的 Trae 开发工具,在本地下载使用,记录下来。 第一步、下载安装 下载地址:【Trae中文版下载地址】,下载的安装文件名为:【Trae CN-Se…

【LangChain接入阿里云百炼deepseek】

这是目录 前言阿里云百炼注册账号使用代码执行结果 前言 大模型爆火,现在很多教程在教怎么使用大模型来训练Agent智能体,但是大部分教程都是使用的OpenAI。 最近阿里云推出DeepSeek-R1满血版,新用户可享100万免费Token额度。 今天就教大家怎…

火绒企业版V2.0全面支持Linux与国产化系统!免费试用助力国产化终端安全升级

国产化浪潮下的安全新挑战 随着信创产业的加速推进,国产操作系统(统信UOS、麒麟OS等)和ARM架构服务器逐步成为政企核心业务的基础设施。然而,针对国产化系统的勒索攻击、网页篡改、供应链漏洞等威胁频发,传统安全方案…

【HarmonyOS Next】鸿蒙加固方案调研和分析

【HarmonyOS Next】鸿蒙加固方案调研和分析 一、前言 根据鸿蒙应用的上架流程,本地构建app文件后,上架到AGC平台,平台会进行解析。根据鸿蒙系统的特殊设置,仿照IOS的生态闭环方案。只能从AGC应用市场下载app进行安装。这样的流程…

win11编译llama_cpp_python cuda128 RTX30/40/50版本

Geforce 50xx系显卡最低支持cuda128,llama_cpp_python官方源只有cpu版本,没有cuda版本,所以自己基于0.3.5版本源码编译一个RTX 30xx/40xx/50xx版本。 1. 前置条件 1. 访问https://developer.download.nvidia.cn/compute/cuda/12.8.0/local_…

【物联网-WIFI】

物联网-WIFI ■ ESP32-C3-模块简介■ ESP32-C3-■ ESP32-C3-■ WIFI-模组■ WIFI-■ WIFI- ■ ESP32-C3-模块简介 ■ ESP32-C3- ■ ESP32-C3- ■ WIFI-模组 ■ WIFI- ■ WIFI-

LeetCode1871 跳跃游戏VII

LeetCode 跳跃游戏 IV:二进制字符串的跳跃问题 题目描述 给定一个下标从 0 开始的二进制字符串 s 和两个整数 minJump 和 maxJump。初始时,你位于下标 0 处(保证该位置为 0)。你需要判断是否能到达字符串的最后一个位置&#xf…

Burpsuite使用笔记

Burpsuite使用笔记 抓包设置代理open Browserintercept on输入要抓包的网站回车ForwardHTTP history查看抓包数据其他浏览器配置burpsuite代理浏览器代理器插件配置打开代理同样步骤访问原理三级目录抓包 设置代理 open Browser 打开内置浏览器 intercept on 输入要抓包的网…

Windows 远程桌面多端口访问,局域网虚拟IP映射多个Windows 主机解决方案

情景 项目现场4G路由局域网中两台主机通过VPN连接到公司内网,实现远程管理,要求映射两个Windows 桌面进行管理。 目录 情景 网络 思路 已知 问题解决 1.客户端通过VPN进入内网路由器配置NAT 2.使用远程主机远程桌面功能:IP端口号访问 …

VS Code C++ 开发环境配置

VS Code 是当前非常流行的开发工具. 本文讲述如何配置 VS Code 作为 C开发环境. 本文将按照如下步骤来介绍如何配置 VS Code 作为 C开发环境. 安装编译器安装插件配置工作区 第一个步骤的具体操作会因为系统不同或者方案不同而有不同的选择. 环境要求 首先需要立即 VS Code…

Flutter 学习之旅 之 flutter 不使用插件,实现简单带加载动画的 LoadingToast 功能

Flutter 学习之旅 之 flutter 不使用插件,实现简单带加载动画的 LoadingToast 功能 目录 Flutter 学习之旅 之 flutter 不使用插件,实现简单带加载动画的 LoadingToast 功能 一、简单介绍 二、LoadingToast 三、简单案例实现 四、关键代码 一、简单…

Spring (八)AOP-切面编程的使用

目录 实现步骤&#xff1a; 1 导入AOP依赖 2 编写切面Aspect 3 编写通知方法 4 指定切入点表达式 5 测试AOP动态织入 图示&#xff1a; 一 实现步骤&#xff1a; 1 导入AOP依赖 <!-- Spring Boot AOP依赖 --><dependency><groupId>org.springframewor…

开源数字人模型Heygem

一、Heygem是什么 Heygem 是硅基智能推出的开源数字人模型&#xff0c;专为 Windows 系统设计。基于先进的AI技术&#xff0c;仅需1秒视频或1张照片&#xff0c;能在30秒内完成数字人形象和声音克隆&#xff0c;在60秒内合成4K超高清视频。Heygem支持多语言输出、多表情动作&a…

神经网络为什么要用 ReLU 增加非线性?

在神经网络中使用 ReLU&#xff08;Rectified Linear Unit&#xff09; 作为激活函数的主要目的是引入非线性&#xff0c;这是神经网络能够学习复杂模式和解决非线性问题的关键。 1. 为什么需要非线性&#xff1f; 1.1 线性模型的局限性 如果神经网络只使用线性激活函数&…

使用SSH密钥连接本地git 和 github

目录 配置本地SSH&#xff0c;添加到github首先查看本地是否有SSH密钥生成SSH密钥&#xff0c;和邮箱绑定将 SSH 密钥添加到 ssh-agent&#xff1a;显示本地公钥*把下面这一串生成的公钥存到github上* 验证SSH配置是否成功终端跳转到本地仓库把http协议改为SSH&#xff08;如果…

关于AI数据分析可行性的初步评估

一、结论&#xff1a;可在部分环节嵌入&#xff0c;无法直接处理大量数据 1.非本地部署的AI应用处理非机密文件没问题&#xff0c;内部文件要注意数据安全风险。 2.AI&#xff08;指高规格大模型&#xff09;十分适合探索性研究分析&#xff0c;对复杂报告无法全流程执行&…

矩阵分析-浅要理解(深度学习方向)

梯度分析与最优化 在深度学习的任务中&#xff0c;我们所期望的是训练一个神经网络&#xff0c;使得预测结果与真实标签之间的误差最小化&#xff0c;这可以近似看作是一个提供梯度下降等优化找到全局最优解的凸优化问题。 奇异值分解 在信息工程领域&#xff0c;对数据处理的…

使用DeepSeek+蓝耘快速设计网页简易版《我的世界》小游戏

前言&#xff1a;如今&#xff0c;借助先进的人工智能模型与便捷的云平台&#xff0c;即便是新手开发者&#xff0c;也能开启创意游戏的设计之旅。DeepSeek 作为前沿的人工智能模型&#xff0c;具备强大的功能与潜力&#xff0c;而蓝耘智算云平台则为其提供了稳定高效的运行环境…

固定表头、首列 —— uniapp、vue 项目

项目实地&#xff1a;也可以在 【微信小程序】搜索体验&#xff1a;xny.handbook 另一个体验项目&#xff1a;官网 一、效果展示 二、代码展示 &#xff08;1&#xff09;html 部分 <view class"table"><view class"tr"><view class&quo…