Java中的异常

认识异常

异常就是程序出现的问题;

Integer.valueOf("aaaa");

 异常体系

因为写代码时经常会出现问题,Java的设计者们早就为我们写好了很多个异常类,来描述不同场景下的问题。而有些类是有共性的所以就有了异常的继承体系

 Error:代表的系统级别错误(属于严重问题),也就是说系统一旦出现问题,sun公司会把这些问题封装成Error对象给出来,说白了,Error是给sun公司自己用的,不是给我们程序员用的,因此我们开发人员不用管它

Exception:叫异常,它代表的才是我们程序可能出现的问题,所以,我们程序员通常会用Exception以及它的子类来封装程序出现的问题

运行时异常:RuntimeException及其子类,编译阶段不会出现错误提醒,运行时出现的异常(如:数组索引越界异常)(非受检)

int[] arr = {1,2,3,4,5};
Sysout.out.println(arr[5]);

产生ArrayIndexOutOfBoundsExcpetion异常

编译时异常:编译阶段就会出现错误提醒的(如:日期解析异常)(受检)

 

自定义异常

如果企业自己的某种问题,想通过异常来表示,那就需要自己来定义异常类了。

应用:

public class Test01 {public static void main(String[] args) {}public static void saveAge(int age) throws AgeOutOfBroundException {if(age > 0 && age < 150 ){info("年龄保存成功");}else {throw new AgeOutOfBroundException("年龄超出范围");}}
}
class AgeOutOfBroundException extends Exception{public AgeOutOfBroundException() {}public AgeOutOfBroundException(String 年龄超出范围) {}
}

注意咯,自定义异常可能是编译时异常,也可以是运行时异常

1.如果自定义异常类继承Excpetion,则是编译时异常。
    特点:方法中抛出的是编译时异常,必须在方法上使用throws声明,强制调用者处理。
    
2.如果自定义异常类继承RuntimeException,则运行时异常。
    特点:方法中抛出的是运行时异常,不需要在方法上用throws声明。

异常处理

比如有如下的场景:A调用用B,B调用C;C中有异常产生抛给B,B中有异常产生又抛给A;异常到了A这里就不建议再抛出了,因为最终抛出被JVM处理程序就会异常终止,并且给用户看异常信息,用户也看不懂,体验很不好。

此时比较好的做法就是:1.将异常捕获,将比较友好的信息显示给用户看;2.尝试重新执行,看是是否能修复这个问题。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Test02 {public static void main(String[] args) {try {test1();} catch (ParseException e) {System.out.println("你想要找的文件不存在");;} catch (FileNotFoundException e) {System.out.println("你要解析的时间不正确");throw new RuntimeException(e);}}public static void test1() throws ParseException, FileNotFoundException {SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");Date date = dateFormat.parse("2028-02-28 22:18:46");System.out.println(date);test2();}private static void test2() throws FileNotFoundException {InputStream inputStream = new FileInputStream("D:/movie.pang");}
}

第一种处理方式是,在main方法中对异常进行try...catch捕获处理了,给出友好提示。

第二种处理方式是:在main方法中对异常进行捕获,并尝试修复


import java.util.Scanner;
/*** 目标:掌握异常的处理方式:捕获异常,尝试修复。*/
public class Test03 {public static void main(String[] args) {while (true){try {System.out.println(getmoney());break;} catch (Exception e) {System.out.println("你输入有误");//打印错误信息}}}public static double getmoney(){Scanner scanner = new Scanner(System.in);while (true){System.out.println("请输入你的钱数");double money = scanner.nextDouble();if(money > 0){return money;}else {System.out.println("你输入的价格不合适");}}}
}

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

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

相关文章

[MySQL] — 数据类型和表的约束

目录 数据类型 数据类型分类 数值类型 tinyint类型 bit类型 小数类型 float decimal 字符串类型 char varchar char和varchar的区别 日期和时间类型 enum 和 set 表的约束 空属性 默认值 列描述 zeorfill 主键 创建表时在字段上指定主键 删除主键&#xff1a; 追…

Kubernetes 部署DolphinScheduler 创建租户失败

创建租户 报错创建租户失败。后台日志如下 源代码跟踪 org.apache.dolphinscheduler.api.service.impl.TenantServiceImpl / if hdfs startup if (PropertyUtils.getResUploadStartupState()) {createTenantDirIfNotExists(tenantCode); }需要将 resource.storage.type 置为…

Go自写NIPS—网络威胁防御系统

目录 0x00 摘要0x01 示例柱状图3d视图报警列表控制查询功能封堵IP实例 0x02 结语 0x00 摘要 紧接着上文&#xff0c;我开发了IDS的雏形&#xff0c;但是因为界面太丑&#xff0c;还频繁出现bug&#xff0c;并且也没有封禁等功能&#xff08;还需要去防火墙自己封禁&#xff09…

SpringBoot案例-员工管理-删除员工

查看页面原型&#xff0c;明确需求 页面原型 有批量删除和删除单个数据 需求 查看接口文档 接口文档的链接如下&#xff1a; 【腾讯文档】SpringBoot案例所需文档 https://docs.qq.com/doc/DUkRiTWVaUmFVck9N 思路分析 删除单个数据&#xff0c;将要删除的员工信息的id传…

​《乡村振兴战略下传统村落文化旅游设计 》在2023年畅销榜排名465位

​《乡村振兴战略下传统村落文化旅游设计 》在2023年畅销榜排名465位

驱动DAY5

1.实现设备文件和设备的绑定&#xff0c;编写LED驱动 2.复习竞态的解决方法和阻塞IO实现 第一个任务 头文件 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;u…

【JAVA】我们该如何规避代码中可能出现的错误?(一)

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言三种类型的异常异常处理JAVA内置异常类Exception 类的层次 前言 异常是程序中的一些错误&#xff0c;但并不是所有的错误都是异常&#xff0c;并且错误有时候是可以避免的&…

企望制造ERP系统 RCE漏洞[2023-HW]

企望制造ERP系统 RCE漏洞 一、 产品简介二、 漏洞概述三、 复现环境四、 漏洞复现小龙POC检测 五、 修复建议 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;…

【菜鸡读论文】MS-TCT: Multi-Scale Temporal ConvTransformer for Action Detection

【菜鸡读论文】MS-TCT: Multi-Scale Temporal ConvTransformer for Action Detection 大家好哇&#xff01;是谁美滋滋地准备开始放暑假了&#xff01;没错&#xff01;你没有听错&#xff01;放暑假&#xff01; 谁能想到都已经立秋了&#xff0c;竟然有人还在实验室&#xf…

优测云服务平台|【压力测试功能升级】轻松完成压测任务

一、本次升级主要功能如下&#xff1a; 1.多份报告对比查看测试结果 2.报告新增多种下载格式 Word格式Excel格式 3.新增多种编排复杂场景的控制器 漏斗控制器并行控制器事务控制器仅一次控制器分组控制器集合点 4.新增概览页面&#xff0c;包含多种统计维度 二、报告对比…

中远麒麟堡垒机 SQL注入漏洞复现

0x01 产品简介 中远麒麟依托自身强大的研发能力,丰富的行业经验&#xff0c;自主研发了新一代软硬件一体化统一安全运维平台一-iAudit 统一安全运维平台。该产品支持对企业运维人员在运维过程中进行统一身份认证、统一授权、统一审计、统一监控&#xff0c;消除了传统运维过程中…

【自用】云服务器 使用 docker 搭建 HomeAssistant + MQTT 物联网平台

总览 1.搭建流程概述 2.准备工作 3.开始搭建&#xff01; 4.总结 如果想看 ESP32 或其他使用 MicroPython 编程的单片机如何连接到该云服务器&#xff0c;实现 HomeAssistant 控制 单片机的内容&#xff0c;请看我这篇博客的下一篇。 一、搭建流程概述 0.总体流程 我们需要…