19异常的学习笔记

异常

很重要,有利于我们平时处理问题
异常就是代表程序出现了问题
常见的异常比如说

  1. 数组越界
  2. 除法除0

异常的体系是什么

java.lang.Throwable
Error Exception
RuntimeException 其他异常

Error 代表的是系统级别的错误,也就是一旦系统出现问题,sun公司会把这些问题封装程Error对象出来
Error 是sun公司自己用的,不是给我们程序员用的,我们开发人员不用管
Exception:叫异常,它代表的才是我们程序可能出现的问题,所以,我们程序员通常会用 Exception 以及它的孩子来封装程序出现的问题。
运行时异常:RuntimeException及其子类,编译阶段不会出现错误提醒,运行时出现的异常(如:数组索引越界异常)
编译时异常:编译阶段就会出现错误提醒的。(如:日期解析异常)
抓住异常,我们通过这个代码来进行抓住异常,如果 try 里面的代码是有异常的,那我们就进行捕捉,如果捕捉到,我们就可以得到这个异常信息,并输出这个异常的信息

        try {SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date d = date.parse("2020-11-5 11:50:90");System.out.println(d);} catch (ParseException e) {e.printStackTrace();}

自定义运行时异常

  1. 定义一个异常类继承RuntimeExceptin
  2. 重写构造器
  3. 通过throw new 异常类来创建异常对象并输出

编译阶段不报错,提醒不强烈,运行时才报错

public class exception {public static void main(String[] args) {saveAge(180);}public  static  void saveAge(int age){if(age>0&&age<150){System.out.println("年龄被成功保存"+age);}else {throw  new AgeIllegalRuntimeException("age is illegal ,your age is "+age);}}
}

我们这个新建的这个异常类我们是继承这个RuntimeException

public class AgeIllegalRuntimeException extends RuntimeException{//构造函数public AgeIllegalRuntimeException() {}//构造函数,其中这个message是输出的异常信息public AgeIllegalRuntimeException(String message) {super(message);}
}

抛出编译时异常

public class exception {public static void main(String[] args) {saveAge(12);//saveAge2(25);   //这里会直接报错,我们有两种解决办法,一种是继续往上抛try {saveAge2(160);System.out.println("程序正常执行");} catch (AgeIllegleException e) {System.out.println("程序异常");throw new RuntimeException(e);}}public  static  void saveAge(int age){if(age>0&&age<150){System.out.println("年龄被成功保存"+age);}else {throw  new AgeIllegalRuntimeException("age is illegal ,your age is "+age);}}//throws 是在这个方法中抛出异常,让该方法调用的时候出现//throw 跑出去一个异常对象。public  static  void saveAge2(int age) throws AgeIllegleException {if(age>0&&age<150){System.out.println("年龄被成功保存"+age);}else {throw  new AgeIllegleException("age is illegal ,your age is "+age);}}
}

分析上面的代码,我们可以看到这些异常的处理的时候我们发现我们可以不断的向外面抛出异常,但是一直抛出异常肯定是不可以的,因此我们需要对其进行捕获异常,利用try catch,进行记录异常,并记录处理信息

异常处理

1. 捕获异常,记录异常并相应合适的信息给用户
2. 捕获异常,尝试重新修复

1. 捕获异常,记录异常并相应合适的信息给用户

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 ExceptionNesting {public static void main(String[] args) {try {test1();} catch (FileNotFoundException e) {System.out.println("文件未找到");throw new RuntimeException(e);} catch (ParseException e) {System.out.println("日期格式 不正确");throw new RuntimeException(e);}}public static void test1() throws FileNotFoundException, ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = sdf.parse("2020-10-20 12:12");System.out.println(date);test2();}public static void test2() throws FileNotFoundException {InputStream is = new FileInputStream("D:/meinv.png");}
}

2. 捕获异常并进行处理

import java.util.Scanner;public class StrongExceptionCorrect {public static void main(String[] args) {while (true) {try {System.out.println(getMoney());break;} catch (Exception e) {System.out.println("你输入的价格不合适请重新输入(你输入的并不是一个double类型的变量,可能输入了字符串导致异常)");}}}public static double getMoney(){Scanner input = new Scanner(System.in);while (true){System.out.println("请您输入合适的价格");double money = input.nextInt();if(money>=0){return money;}else {System.out.println("你输入的价格是不合适的");}}}
}

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

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

相关文章

由于数字化转型对集成和扩展性的要求,定制化需求难以满足,百数低代码服务商该如何破局?

当政策、技术环境的日益成熟&#xff0c;数字化转型逐步成为企业发展的必选项&#xff0c;企业数字化转型不再是一道选择题&#xff0c;而是决定其生存发展的必由之路。通过数字化转型升级生产方式、管理模式和组织形式&#xff0c;激发内生动力&#xff0c;成为企业顺应时代变…

最新适合小白前端 Javascript 高级常见知识点详细教程(每周更新中)

1. window.onload 窗口或者页面的加载事件&#xff0c;当文档内容完全加载完成会触发的事件&#xff08;包括图形&#xff0c;JS脚本&#xff0c;CSS文件&#xff09;&#xff0c;就会调用处理的函数。 <button>点击</button> <script> btn document.q…

python项目2to3方案预研

目录 官方工具2to3工具安装参数解释基本使用工具缺陷 future工具安装参数解释基本使用工具缺陷 python-modernize工具安装参数解释基本使用工具缺陷 pyupgrade工具安装参数解释基本使用工具缺陷 对比 官方工具2to3 2to3 是Python官方提供的用于将Python 2代码转换为Python 3代…

如何在 CentOS 8 上安装 OpenCV?

OpenCV( 开源计算机视觉库)是一个开放源代码计算机视觉库&#xff0c;支持所有主要操作系统。它可以利用多核处理的优势&#xff0c;并具有 GPU 加速功能以实现实时操作。 OpenCV 的用途非常广泛&#xff0c;包括医学图像分析&#xff0c;拼接街景图像&#xff0c;监视视频&am…

单例模式(饿汉模式 懒汉模式)与一些特殊类设计

文章目录 一、不能被拷贝的类 二、只能在堆上创建类对象 三、只能在栈上创建类对象 四、不能被继承的类 五、单例模式 5、1 什么是单例模式 5、2 什么是设计模式 5、3 单例模式的实现 5、3、1 饿汉模式 5、3、1 懒汉模式 &#x1f64b;‍♂️ 作者&#xff1a;Ggggggtm &#x…

VM虚拟机CentOS7.9x64 LVM硬盘扩容

软件版本&#xff1a;VMWare Workstation14 虚拟机CentOS 7.9X64位 GParted 0.33.0 一、虚拟机安装gparted软件 sudo yum install epel-release sudo yum install gparted sudo yum install yum-utils git gnome-common gcc-c sudo yum-builddep gparted 二、关闭虚拟机&a…

一、Java简介

基础知识 1.1.Java简介1.1.1.什么是Java语言1.1.2.Java应用的领域1.1.3.Java版本1.1.4.如何学好Java1.1.5.Java API文档1.1.6.Java语言特性 —————————————————————————————————————————————————— —————————————…

MySQL学习系列(1)-每天学习10个知识

目录 1. SQL 和 MySQL2. JOIN 类型3. 索引4. ACID5. 优化MySQL查询性能6. 创建MySQL存储过程的步骤7. 范式和反范式设计8. SQL注入9. GROUP BY 和 HAVING10. UNION 和 UNION ALL &#x1f44d; 点赞&#xff0c;你的认可是我创作的动力&#xff01; ⭐️ 收藏&#xff0c;你的…

java 性能分析:如何提高 Java 程序的性能

示例示例Java性能分析是指通过对Java程序进行分析&#xff0c;以改善应用程序的性能。它可以帮助开发人员确定程序中的性能瓶颈&#xff0c;并对其进行优化。Java性能分析可以通过多种方式完成&#xff0c;比如使用JVM内置的性能分析工具&#xff0c;如jstat&#xff0c;jmap&a…

ffplay源码解析-main入口函数

main入口函数 初始化 变量、缓存区、SDL窗口初始化等 int main(int argc, char **argv) {int flags;VideoState *is; // av_log_set_level(AV_LOG_TRACE);init_dynload();av_log_set_flags(AV_LOG_SKIP_REPEATED);parse_loglevel(argc, argv, options);/// av_log_set_le…

Hive行转列[一行拆分成多行/一列拆分成多列]

场景&#xff1a; hive有张表armmttxn_tmp&#xff0c;其中有一个字段lot_number&#xff0c;该字段以逗号分隔开多个值&#xff0c;每个值又以冒号来分割料号和数量&#xff0c;如&#xff1a;A3220089:-40,A3220090:-40,A3220091:-40,A3220083:-40,A3220087:-40,A3220086:-4…

深入理解JVM虚拟机第九篇:详细介绍JVM中的双亲委派机制工作原理和机制

文章目录 一:双亲委派机制 1:工作原理 2:代码展示 3:异常代码展示

用Jmeter进行压测详解

简介&#xff1a; 1.概述 一款工具&#xff0c;功能往往是很多的&#xff0c;细枝末节的地方也很多&#xff0c;实际的测试工作中&#xff0c;绝大多数场景会用到的也就是一些核心功能&#xff0c;根本不需要我们事无巨细的去掌握工具的所有功能。所以本文将用带价最小的方式讲…

软路由和硬路由的区别是什么,性价比与可玩性分析

软路由和硬路由是两种不同类型的路由器设备&#xff0c;它们在基本原理、功能、性能和灵活性等方面存在一些区别&#xff1a; 硬件&#xff1a;软路由是基于一台普通的计算机或服务器&#xff0c;通过软件来实现路由器的功能&#xff1b;而硬路由是专门设计的硬件设备&#xff…

Vue前端开发中的输入限制与输入规则探究

前言 在Vue前端开发中&#xff0c;我们经常需要对用户的输入进行限制和规范&#xff0c;以确保数据的准确性和安全性。本文将介绍如何使用Vue的el-input组件来实现输入限制和输入规则&#xff0c;并提供相应的代码示例。 一、输入限制 最大长度限制 我们可以使用maxlength属…

CCC数字钥匙设计【BLE】--URSK管理

1、URSK创建流程 URSK的英文全称为&#xff1a;UWB Ranging Secret Key&#xff0c;即UWB安全测距密钥。 在车主配对时会生成URSK&#xff0c;且在车主配对期间&#xff0c;车辆不得尝试生成第二个URSK。 URSK示例: ed07a80d2beb00f785af2627c96ae7c118504243cb2c3226b3679da…

抖音seo账号矩阵源码系统

1. 开通多个抖音账号&#xff0c;并将它们归纳为一个账号矩阵系统。 2. 建立一个统一的账号管理平台&#xff0c;以便对这些账号进行集中管理&#xff0c;包括账号信息、内容发布、社区交互等。 3. 招募专业的运营团队&#xff0c;对每个账号进行精细化运营&#xff0c;包括内…

CSS 响应式设计:图片

文章目录 图片使用 width 属性使用 max-width 属性网页中添加图片背景图片不同设备显示不同图片HTML5 \<picture> 元素 图片 在CSS中&#xff0c;可以通过以下方法实现响应式设计中的图片处理&#xff1a; 使用 max-width 属性&#xff1a;将图片的最大宽度设置为 100%…

年龄大了转嵌入式有机会吗?

年龄大了转嵌入式有机会吗&#xff1f; 首先&#xff0c;说下结论&#xff1a;年龄并不是限制转行嵌入式软件开发的因素&#xff0c;只要具备一定的编程和电子基础知识&#xff0c;认真学习和实践&#xff0c;是可以成为优秀的嵌入式软件开发工程师的。最近很多小伙伴找我&…

AOSP 13 屏蔽系统的crash和anr弹窗

需求 屏蔽系统的crash和anr弹窗 原理 在frameworks/base/services/core/java/com/android/server/am/AppErrors.java的handleShowAppErrorUi方法中做是否屏蔽判断mSystemConfiguration.hideCrashWindow() , 以及ActivityTaskManagerService.java的mShowDialogs属性 实现 fram…