JavaSE——异常(2/2)-异常的处理(记录异常并提示 、尝试重新修复)

简介: JavaSE——异常(2/2)-异常的处理(记录异常并提示 、尝试重新修复)

开发中对于异常的常见处理方式

  • 一层一层往上抛出异常,并且在最上层捕获异常,分为两种不同的处理方式。

 

例如,B站网页报错就是采取的第一种方式:


记录异常并提示

案例演示

先来看第一种处理方式,以时间解析报错和读取不存在文件为例子。



如上方案例,我们来进行处理:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class Test3 {
    //写一个方法是时间解析错误的,且去调用另外一个方法two()
    public static void one() throws ParseException, FileNotFoundException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = sdf.parse("2028-11-11 10:24");
        System.out.println(d);
        two();
    }
 
    //two方法也报了异常
    public static void two() throws FileNotFoundException {
        //读取文件,暂时只需要知道他读取了不存在的文件而报错,其他先不了解
        InputStream is = new FileInputStream("D:/wuyu/ok.png");
    }
 
    public static void main(String[] args) {
        try {
            one();
        } catch (ParseException e) {
            System.out.println("您要解析的时间有问题了!");
            e.printStackTrace();        //打印出这个异常对象的信息,记录下来
        } catch (FileNotFoundException e) {
            System.out.println("您要找的文件不存在!");
            e.printStackTrace();        //打印出这个异常对象的信息,记录下来
        }
    }
}

运行结果:


如果时间格式无误,就会捕获到two方法的异常了


再次运行:


流程解析



对于文件读取错误的异常,流程也是类似的:


写法优化

它们都是Exception的子类,所以可以直接抛出Exception

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class Test3 {
    public static void main(String[] args) {
        try {
            one();
        } catch (Exception e) {
            System.out.println("您当前操作有问题!");
            e.printStackTrace();        //打印出这个异常对象的信息,记录下来
        }
    }
 
    //写一个方法是时间解析错误的,且去调用另外一个方法two()
    public static void one() throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = sdf.parse("2028-11-11 12:10:24");
        System.out.println(d);
        two();
    }
 
    //two方法也报了异常
    public static void two() throws Exception {
        //读取文件,暂时只需要知道他读取了不存在的文件而报错,其他先不了解
        InputStream is = new FileInputStream("D:/wuyu/ok.png");
    }
}

运行之后也能达到同样的效果:


尝试重新修复

第二种方法,我们以完成一个需求演示

需求:调用一个方法,让用户输入一个合适的价格返回为止。

import java.util.Scanner;
 
public class Test4 {
    //需求:调用一个方法,让用户输入一个合适的价格返回为止。
    public static double getMoney(){
        Scanner sc = new Scanner(System.in);
        double money = 0;
        while(true){
            System.out.println("请您输入合适的价格: ");
            money = sc.nextDouble();
            if(money >= 0){
                return money;
            }else{
                System.out.println("您输入的价格是不合适的");
            }
        }
    }
    public static void main(String[] args) {
        //对于上述的方法,如果输入的是非double类型的数据,就会产生异常
 
        //我们对异常尝试修复
        while(true){
            try {
                System.out.println(getMoney());
                break;
            } catch (Exception e) {
                System.out.println("请您输入合法的数字!");
            }
        }
 
    }
}

看运行结果:



抛出异常(throws)

  • 在方法上使用throws关键字,可以将方法内部出现的异常抛出去给调用者处理。

/推荐方式

方法 throws Exception{

}

//Exception代表可以捕获一切异常

捕获异常(try...catch)

  • 直接捕获程序出现的异常。

//推荐方式

try{

       //可能出现异常的代码

}catch(Exception e){

       e.printStackTrace();        //直接打印异常对象的信息

}

//Exception代表可以捕获一切异常


END



目录
相关文章
|
8月前
|
人工智能 算法 安全
一个人=一支AI团队课题组!阿里云/本地部署 OpenClaw+ Discord 多 Agent 科研协作系统教程+百炼API配置及FAQ
2026年,科研工作的核心痛点仍集中在“重复劳动占用深度思考时间”——文献检索、数据预处理、实验记录、论文撰写等流程性工作,往往消耗科研人员40%以上的精力。而OpenClaw与Discord的组合,彻底改变了这一现状:通过搭建分工明确的5人AI科研团队(总指挥、文献调研、数据工程、算法研发、论文撰写),实现“文献自动扫描、实验全程追踪、论文智能起草”的全流程自动化,7×24小时不间断推进研究,让科研人员聚焦核心创新。
1289 2
|
8月前
|
人工智能 Linux API
别人的OpenClaw在聊天,你的ai龙虾OpenClaw可以7×24小时上班:阿里云/本地部署+大模型配置指南
如今很多人使用OpenClaw(Clawdbot,社区称“龙虾”),还停留在**打开对话框、主动提问、用完就关**的阶段,AI始终处于“被动响应”状态。但真正的OpenClaw价值,在于让它变成**7×24小时在后台自动上班的数字员工**——消息来了自动处理、任务到点自动执行、多平台信息统一汇总、你睡觉时它仍在工作。
624 0
|
5月前
|
人工智能 编解码
角色设计功能:从一张图,生成一整套角色一致性资产包
献丑AI画布的「角色设计」功能,让你从一张基准图出发,一键生成正面锚点、转面三视图、表情表、口型表、配色卡、服装拆解、道具图、定妆照等 12 项角色资产。
1469 0
|
人工智能 智能设计 数据可视化
挑战杯阿里云赛题收官,看大学生如何用AI技术助力乡村振兴
第十九届“挑战杯”人工智能领域擂台赛聚焦乡村振兴,阿里云联合公益力量,组织全国800所高校学子,运用AI技术为浙江开化、江西遂川定制文旅与农产品创新方案,推动赛事成果落地转化,助力乡村发展。
|
10月前
|
存储 人工智能 监控
阿里云 Clawdbot(现名 Moltbot)是什么?2026 Clawdbot/Moltbot官网与登录入口全解
Clawdbot(2026年1月已更名为Moltbot)是一款由PSPDFKit Labs开发的开源自托管AI智能体(AI Agent),核心定位是“真正能执行任务的个人AI助手”,而非单纯的聊天工具,可7×24小时运行在用户自有设备/服务器上,通过聊天软件接收指令并自动完成文件管理、日程安排、邮件处理、代码编写、网页操作等自动化任务,数据本地优先存储,隐私可控。阿里云为其提供“开箱即用”的云部署方案,整合轻量应用服务器/无影云电脑算力、百炼大模型服务与钉钉等消息通道,降低部署门槛。以下从核心定位、官网入口、登录后台与使用要点展开说明,无营销词汇,信息准确。
4353 6
|
10月前
|
缓存 JSON 数据安全/隐私保护
安居客 item_search - 获取搜索数据接口对接全攻略:从入门到精通
安居客anjuke.item.search接口是房产多维度筛选核心API,覆盖新房、二手房、租房等全品类,支持区域、价格、户型等精细检索,返回轻量房源标识与属性,联动item_get获取详情。HTTPS+API签名认证,JSON/XML双格式响应,具备实时性强、权限分级、筛选灵活等特点,适用于搜索页构建、市场分析、智能推荐等场景。
|
10月前
|
人工智能 自然语言处理 机器人
适合汽车行业的智能客服系统推荐与选型指南
汽车行业迈向智能化与全球化,客户服务升级为体验增值核心。本文对比瓴羊Quick Service、得助智能、亿捷云客服、Zoho Desk四大系统,从场景适配、技术能力、成本与合规等维度,为车企提供选型参考,助力构建高效、智能的服务体系,提升客户满意度与品牌竞争力。(238字)
|
存储 JavaScript 前端开发
说说JavaScript数字精度丢失的问题,如何解决?
在 JavaScript 中,数字精度丢失是一种普遍的问题。这是因为 JavaScript 内部的数字均以 IEEE 754 标准的双精度浮点数格式存储,这种格式只能精确表示有限个小数,而对于一些无限循环小数或无理数,无法精确表示,就会出现精度丢失的情况。
806 0
|
存储 Ubuntu 搜索推荐
构建多用户的 Jupyter 服务器 —— 利用 JupyterHub
【8月更文第29天】**摘要** JupyterHub 是一个易于使用的、可伸缩的、多用户的 Jupyter Notebook 服务器。它允许您在一个集中式服务器上托管多个独立的 Jupyter Notebook 会话,非常适合团队协作和教学环境。本文将详细介绍如何安装和配置 JupyterHub,以及如何利用它来构建一个多用户 Jupyter 服务器环境。
6255 0