classcastexception异常_优雅的异常处理

146d727b3f43a5b1b9eb59d64996e185.png
  1. 代码正常运行不会出问题,但是遇到意外,参数变量,不符合要求,发生意外,代码终止运行
  2. 代码中的异常处理好了,代码就可以顺利的继续运行!

3.3 最近我们遇到过的异常

  1. System.out.println(1/0);//java.lang.ArithmeticException:/ by zero
  2. String str = null;

System.out.println(str.length());//java.lang.NullPointerException

  1. int[] arr = {1,2};

System.out.println(arr[arr.length]);//java.lang.ArrayIndexOutOfBoundsException: 2

  1. SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd HH时mm分ss秒 E");

sdf.parse("fsdfsdf");//ParseException

5.ClassCastException:类型转换异常

异常的分类

8993123bab4493928c7bf0e0942cc4e8.png

------------------------------------------------------------------------------------------------------------

de145328d0ae2554ceba8944362c8215.png

异常的处理方式

5.1 异常的处理方式

  1. 自己捕获处理
  2. 自己不处理,抛出给别人

5.2 自己处理[捕获异常]

try-catch的语法结构及链式结构多异常处理方式

  • 语法:

try{

//可能产生异常的代码

}catch(捕获的异常类型 e){//e是形式参数

//该异常捕获之后要做的操作

}catch(捕获的异常类型 e){//e是形式参数

//该异常捕获之后要做的操作

}finally{

//异常发生之后一定会执行到的语句块:

//①流资源关闭②释放锁

}

语句块执行顺序:

  1. 顺序执行:进入异常捕获语句块
  2. 如果产生异常,执行catch捕获,捕获到对应异常,并且对应catch后面的代码块
  3. finally语句块一定会执行到:前提前面语句没有执行System.exit(0)退出虚拟机

5.2异常信息处理方式二抛出异常

  • 语法结构:方法后面使用throws 需要抛出的异常类型

示例:

void eat() throws ArithmeticException, CloneNotSupportedException{

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月");

//sdf.parse("fsdfsd");

}

  • 抛出异常的注意事项:

①方法抛出运行时异常,在方法头可以不用抛出异常

②方法抛出编译时异常:方法必须处理异常,或者抛出同类异常,或者抛出异常该异常的父类类型异常

获得异常信息的方式

异常捕获分析

  1. 写多个捕获异常的语句块,链式结构捕获多异常,根据不同的异常,做不同的处理
  2. 捕获异常可以写异常的父类,也可以捕获到对应子类的异常
  3. catch(捕获的异常类型 e)捕获的异常实际捕获一个异常对象,该对象e可以在catch语句块直接使用

获取信息的方式

方式1:System.out.println(e.getMessage());//e.getMessage()

方式2:System.out.println(e);//e.toString()

方式3:e.printStackTrace();//打印异常信息

finally结构

  1. finally语句块
  2. try-catch语句块可以用写finally
  3. 处理异常之后finally语句块一定会执行到
  4. finally语句块中,一般用来处理什么内容
  5. 关闭流资源[ IO流知识部分再了解 ]
  6. 释放锁[ 线程知识部分再了解 ]
  7. 注意 : 一般不要在finally里面写返回语句,程序难理解
  8. finally语句之前,如果有执行退出虚拟机,也是不会执行finally语句块

public static void main(String[] args) {

System.out.println(eat());;

}

static int eat(){

int i = 10;

try{

i = 20;

System.exit(0);

System.out.println(1/0);

return i;

}catch(Exception e){

e.printStackTrace();

i = 30;

return i;

}finally{

i = 40;

return i;

}

}

主动向外 抛出【产生异常】

  • 方法内部主动创建异常抛出:throw new SelfException("账户已经存在,请重新输入");

账号登陆示例:

static String[] arr = {"周周","黄黄"};

public static void main(String[] args) throws SelfException {

login("周周");

}

//主动产生异常向外抛出

static void login(String name) throws SelfException{

for(int i = 0;i<=arr.length-1;i++){

if(name.equals(arr[i])){

throw new SelfException("账户已经存在,请重新输入");//自己在方法内部写一个异常,抛出

}

}

System.out.println("恭喜你注册成功");

}

throws 和 throw的区别

  1. throws 处理异常
    1. 在方法头抛出异常
  1. throw 开发代码存在以外的情况,自己主动抛出异常[产生异常]
    1. 在方法内部 throw new NullPointException();

自定义异常

10.1 为什么需要自定义异常:

  1. java中已经写好很多异常,但不能满足开发中所有异常描述的需求,所以需要自定义异常

10.2 自定义异常的方式

  1. 自定义类继承异常类
  2. 参照其他异常通过Exception设置异常提示信息

public class SelfException extends Exception {

SelfException(String msg){

super(msg);

}

}

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

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

相关文章

Spring Boot微服务,Docker和Kubernetes研讨会–第3部分

在之前的文章中&#xff0c;我们为使用Docker和Spring Boot的订单管理系统构建了一些微服务&#xff08;订单服务&#xff0c;产品服务&#xff0c;客户服务&#xff09;。 我们使用Netflix库来管理&#xff0c;发现和平衡微服务。 管理这些微服务及其多个容器可能会有些棘手&…

2021年茂名市高考成绩查询,2021年茂名高考最高分多少分,历年茂名高考状元

2021年茂名高考成绩公布时&#xff0c;茂名高考成绩最高分受到很多网友关注&#xff0c;具体2021年茂名高考最高分多少分&#xff0c;考生可以在聚志愿网站查询具体位次排名&#xff0c;报考茂名高考一分一段表位次排名、同分数人数、位次查询等相关数据。本期文章小编主要为大…

客制化键盘键位修改_可以用很漂亮形容的一把键盘,差一步就完美

内置钢板是轴体固定需要也是机械键盘的标志&#xff0c;钢板除了可以带来极其稳定的固定效果也成就了机械键盘扎实的手感&#xff0c;同时是机械键盘分量感的主要来源&#xff0c;给人一种结实感&#xff0c;这是薄膜键帽所不具备的。▲外置钢板在悬浮式结构的键盘上比较常见&a…

用于字符串和数组的5种简单有效的Java技术

Java通常会排在前五种最受欢迎​​的编程语言之内&#xff0c;这可以理解。 它是一种通用语言&#xff0c;非常容易学习&#xff0c;因为它是一种高级语言&#xff0c;并且可以满足许多用例。 由于这些原因&#xff0c;Java是一门伟大的语言&#xff0c;可以用来学习您是否有经…

基于html人事管理报告,基于C++builder的课程设计报告 (人事管理系统)

内容介绍原文档由会员 bshhty 发布Cbuilder课程设计( 人事信息管理系统 )12页 7000余字资料包含&#xff1a;完整课程设计报告&#xff0c;源代码等相关设计资料。本课程设计为RAR个文件。目录一、设计任务与要求………………………………………………31.设计内容……………………

adb 切换默认桌面_公告 | 武林外传手游官方服务器全面开放桌面版体验

为了更好的优化玩家游戏体验&#xff0c;应广大客官要求&#xff0c;《武林外传手游》全新桌面版今日上线&#xff0c;iOS及安卓服务器均可在电脑上畅玩《武林外传手游》啦&#xff01;大屏画面更加细腻绚丽&#xff0c;预设键位助你畅游江湖&#xff0c;欢迎广大玩家下载体验&…

计算机网络作业答案吴,中国大学《2020春季课程-计算机网络应用吴迪》答案全部2020高校邦《羽毛球》作业题库答案...

参考答案如下中国处理肌肉拉伤的第一步是()。大学迪答天下观念的核心问题是如何构建和谐社会。春季天下观念的核心是什么&#xff1f;天下有始&#xff0c;课程库答以为天下母。既得其母&#xff0c;课程库答以知其子&#xff1b;既知其子&#xff0c;复守其母&#xff0c;没身…

java获取word书签表格数据_Python读取word文档里面的表格数据

更多精彩&#xff0c;请点击上方蓝字关注我们&#xff01;我们常见的办公数据通常可以分为结构化数据与非结构化数据&#xff0c;比如常见的word, ppt, excel。前两者存储的是非结构化数据&#xff0c;excel存储的是结构化数据。从事数据统计或分析的工作或多或少都会从excel获…

函数指针使用场景和选择_在N + 1场景中使用@NamedEntityGraph更有选择地加载JPA实体...

函数指针使用场景和选择N 1问题是使用ORM解决方案时的常见问题。 当您将某些OneToMany关系的fetchType设置为lazy时&#xff0c;就会发生这种情况&#xff0c;以便仅在访问Set / List时才加载子实体。 假设我们有一个具有两个关系的Customer实体&#xff1a;每个客户的一组订单…

东师计算机应用基础在线作业,东师《计算机应用基础》15春在线作业1答案

《计算机应用基础》15 春在线作业 1 单选题 多选题 判断题一、单选题(共 25 道试题&#xff0c;共 62.5 分。 )1. 21、 1946 年 2 月&#xff0c;在美国诞生了世界上第一台计算机&#xff0c;它的名字叫:A. EDVACB. EDSACC. ENIACD. UNIVAC-1----------------选择&#xff1a;C…

abb智能控制系统_ABB助力国网冀北电力打造虚拟电厂

近日&#xff0c;ABB为国网冀北电力有限公司定制了智能配电计量与协调控制解决方案&#xff0c;对其虚拟电厂进行远程电能管理&#xff0c;实现高峰调节和负载转移&#xff0c;提高电力系统效率&#xff0c;保持供电稳定性。虚拟电厂是通过分布式电力管理系统将电网中发电端(尤…

通过通用数据访问扩展AWS生态系统

Amazon Web Services&#xff08;AWS&#xff09;可帮助组织托管和管理其数据流程&#xff0c;例如构建数据可视化和执行ETL任务。 在CData&#xff0c;我们可以轻松地将AWS Services与异构业务应用程序和分布式数据存储连接起来&#xff0c;以最终帮助企业对其数据进行更全面的…

android官方文档中文版_Now in Android:01 - 如何掌握最新的 Android 技术?

每隔几天我都会通过 Android Developers 的油管官方频道&#xff0c;来了解一下最近 Android 发布了哪些有趣的新技术&#xff0c;最近发现官方推出了一个新的系列视频叫做&#xff1a;Now in Android&#xff0c;目前更新了 4 期&#xff0c;我觉得这个系列蛮有趣的&#xff0…

mvc路由 html,asp.net-mvc – ASP.NET MVC路由从html页面开始

我正在使用IIS 6.我想我的问题是我不知道如何使用routes.MapRoute路由到一个非控制器.我有一个url,如example.com,我希望它为index.htm页面提供服务,而不是使用MVC.我该如何设定&#xff1f;在IIS中,我将index.htm作为我的起始文档,我的global.asax具有标准的“默认”路由,其中…

c++ 反射_固体火箭发动机黏接壳体超声C扫描检测系统研制与应用

某固体火箭发动机燃烧室采用壳体/绝热层/包覆层/推进剂的多界面结构形式&#xff0c;其中绝热层采用玻璃纤维缠绕成型后与钢质旋压壳体胶接而成。在胶接过程中&#xff0c;若存在壳体内部多余物清理不干净、绝热层与壳体配合不严、胶层内部气体未排净等情况&#xff0c;黏接层易…

java scala_经过几天的Scala回归Java的10个最烦人的事情

java scala因此&#xff0c;我正在尝试使用Scala&#xff0c;因为我想编写一个解析器&#xff0c;而Scala Parsers API似乎非常合适。 毕竟&#xff0c;我可以在Scala中实现解析器并将其包装在Java接口后面&#xff0c;因此除了附加的运行时依赖关系之外&#xff0c;应该不存在…

常用计算机网络技术缩写词和术语,网络技术缩写词和术语

常用计算机网络技术缩写词和术语LAN&#xff1a;Local Area Network 局域网WAN: Wide Area Network 广域网MAN: Metropolitan Area Network 城域网FM: Frequency Modulation 频率调制AM: Amplitude Modulation 振幅调制PM: Phase Modulation 相位调制FSK: Frequency-shift Keyi…

python区域找图命令_python读取图片任意范围区域

使用python进行图片处理&#xff0c;现在需要读出图片的任意一块区域&#xff0c;并将其转化为一维数组&#xff0c;方便后续卷积操作的使用。 下面使用两种方法进行处理&#xff1a; convert 函数 from PIL import Image import numpy as np import matplotlib.pyplot as plt …

通用计算机系统的工作方式,通用计算机操作系统典型体系结构综述

摘要:随着操作系统应用领域的扩大&#xff0c;以及操作系统硬件平台的多样化&#xff0c;操作系统的体系结构和开发方式都在不断更新&#xff0c;目前通用机上常见操作系统的体系结构有如下几种:模块组合结构、层次结构、虚拟机结构和微内核结构。本文引用地址&#xff1a;http…

[MEGA DEAL] Ultimate SQL Bootcamp认证捆绑包(98%)

像Pro一样管理任务和数据库&#xff0c;提供有关SQL Lite&#xff0c;Microsoft SQL&#xff0c;MySQL&#xff0c;PostgreSQL&#xff0c;Rest API和Oracle SQL的6门课程 嘿&#xff0c;怪胎&#xff0c; 本周&#xff0c;在我们的JCG Deals商店 &#xff0c;我们提供了另一…