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 


学习自:黑马程序员——JavaSE课程

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux 性能监控命令之dstat

1. dstat 系统默认为安装,直接安装阿里源后,yum install -y dstat安装即可,该命令整合了 vmstat , iostat 和 ifstat,我们先看下效果: 我们先看看具体参数: [rootk8s-master ~]# dstat --help …

C++STL初阶(1):string的使用及初阶原理

此文作为学习stl的笔记,许多普及、概念性的知识点将不再罗列(如stl的发展、背景等) 便于读者作为复习等方法了解。 0.STL简介(笔记向) STL不是祖师爷本贾尼实现的,是在惠普实验室中实现的。其作为一个数据结…

加密“发射台”:未来通信的新模式

随着区块链技术的飞速发展,加密“发射台”作为一种新兴的安全通信工具,正逐渐受到关注。本文将从专业角度深入探讨加密“发射台”的概念、原理、应用场景及其未来发展趋势,以期为读者提供有深度和逻辑性的思考。 一、加密“发射台”的概念与…

开源项目介绍-02 Aubio【1】环境配置和使用 @ Ubuntu + Pycharm + Python

前言: aubio 是一组算法和工具,用于标记和变换音乐和声音。它扫描或监听音频信号,并尝试识别音乐事件。例如,当鼓被击打时,它能检测到音符的频率,或者一个有节奏的旋律的节拍是多少。 aubio 的功能包括&a…

java 文件表创建及前后端使用

表结构task_file 前端具体到业务表单 <el-form-item label"任务附件" prop"taskAttachment"><el-upload ref"upload" accept".jpg, .png, .txt, .xlsx, .doc, .docx, .xls, .pdf, .zip, .rar":action"upload.url" …

C语言例题39、输入一个正整数,将其反方向逆序输出

#include <stdio.h>void main() {int x;int ge; //个位int result 0;printf("请输入一个正整数&#xff1a;");scanf("%d", &x);while (x > 0) {//解题原理ge x % 10;//每次分解取得个位的数字result result * 10 ge;//个十百千万顺序向左…

限购仅剩6地,透过房价地图看楼市行情!

同一天&#xff0c;两地取消限购&#xff01; 5月9日&#xff0c;继杭州取消限购之后&#xff0c;西安也宣布全面取消住房限购&#xff01; 现在&#xff0c;我们透过几幅楼市数据的分布地图&#xff0c;来看看5月的楼市行情&#xff01; 楼市限购&#xff0c;仅剩6地&#…

YOLOv9改进策略 :一种新颖的通用倒瓶颈(UIB)搜索块助力检测| 轻量化之王MobileNetV4

💡💡💡创新点:轻量化之王MobileNetV4 开源 | Top-1 精度 87%,手机推理速度 3.8ms,原地起飞! 最主要创新:引入了通用倒瓶颈(UIB)搜索块,这是一个统一且灵活的结构,它融合了倒瓶颈(IB)、ConvNext、前馈网络(FFN)以及一种新颖的额外深度可分(ExtraDW)变体技…

【iOS】事件传递与响应机制

文章目录 前言事件UIEvent一、事件传递遍历顺序 二、手势识别三、响应机制UIResponder&#xff08;响应者&#xff09;响应者链 四、相关应用扩大button点击范围穿透事件 总结 前言 提到响应者链与事件传递&#xff0c;如果看过其他人的博客&#xff0c;经常能看到这经典的三张…

《探索信息技术中心一体化系统架构:提升企业数字化转型的效率与能力》

在当今数字化时代&#xff0c;信息技术中心&#xff08;IT Center&#xff09;扮演着至关重要的角色&#xff0c;它不仅是企业的技术支撑&#xff0c;更是推动数字化转型的引擎。为了更好地应对日益复杂的业务需求和技术挑战&#xff0c;许多企业开始探索一体化系统架构&#x…

引用数据类型 栈内存 堆内存

let m { a: 10, b: 20 }; let n m; n.a 15; console.log(m.a) // 15 原因&#xff1a;基本数据类型存储在栈内存中&#xff0c;引用数据类型存储在堆内存中 &#xff0c;引用数据类型存储在堆内存中会在栈内存中创建一个指针&#xff0c;栈内存中的这个指针指向堆内存中的地…

英语学习笔记9——How are you today?

How are you today? 你好吗&#xff1f; 词汇 Vocabulary well adj. 好的 n. 井 fine adj. 美好的 两个方面&#xff1a;天气、身体。 搭配&#xff1a;a fine day 晴朗的一天    It’s a fine day today. 今天很晴朗。 good adj. 好的 口语偏多 搭配&#xff1a;Good jo…

基于光纤技术的新能源汽车电池安全监测--FOM²系统

为什么要进行动力电池包的温度监测&#xff1f; 新能源电动汽车的动力电池包的工作温度&#xff0c;不仅会影响电池包性能&#xff0c;而且直接关系到车辆安全。时有发生的新能源汽车电池包起火事件&#xff0c;对电池包、冷却系统以及电池管理系统&#xff08;BMS&#xff09…

初阶C语言(8) - 实用的调试技巧

1. 什么是bug? bug 是计算机领域专业术语&#xff0c;是计算机在硬件、软件、协议和系统安全策略上存在的缺陷&#xff0c;攻击者能够在未授权情况下访问的危害&#xff0c;世界最早的一批程序设计师之一&#xff0c;美国的葛丽丝霍波在调试设备时出现故障&#xff0c;拆开继电…

Java基础教程 - 6 方法

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 6 方法 方法也可以称之为…

算法day03

第一题 179. 查找总价格为目标值的两个商品 本题采用前后指针和单调性规律可解&#xff1b; 解题思路如下&#xff1a; 1、设置前后指针 2、前后指针所指的两数之和大于目标数&#xff0c;右指针左移&#xff1b; 前后指针所指的两数之和小于目标数&#xff0c;左指针右移&…

软件工程复习之软件定义时期

1.什么是软件&#xff1f; 答&#xff1a;软件是程序&#xff0c;数据和文档的集合。 程序是完成指定功能的计算机可执行的指令序列。 数据是程序进行信息处理的数据结构。 文档是开发&#xff0c;使用&#xff0c;维护的图文资料。 2.软件有何特点&#xff1f; 答&#…

2024年小沙弥小视频,轻松吸引中老年观众,上手简单,轻松月入了万

利用人工智能工具制作小沙弥主题的抖音内容&#xff0c;已成为网络赚钱的新途径。这个项目主要吸引中老年人群体&#xff0c;尤其是对智慧和人生哲理感兴趣的观众。小沙弥以其温馨且启发性的内容&#xff0c;引起中老年用户的共鸣&#xff0c;为他们提供心灵慰藉。 项 目 地 …

上传自己的项目到PyPI

准备工作 已注册pypi账号pypi账号已经配置了双重验证pypi账号的token令牌&#xff08;最后上传到pypi需要这个&#xff09;pip install twine&#xff08;上传需要用到的工具&#xff09; 操作步骤 1、准备好工程2、编写setup.py3、开始上传 大功告成 在pypi查看自己包的…

Linux—— 任务规划、SELinux、ACL、磁盘介绍

任务规划&#xff1a; 未来任务的一次性调度 atatqatrm服务&#xff1a; atd周期性任务的调度 crontab 所有用户的任务列表都以文件的形式存在于系统 /var/spool/cron/用户名-l -e-u-r时间 需要执行的任务服务&#xff1a; crond系统维护任务&#xff1a; yum软件仓库缓存的…
最新文章