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…

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

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

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

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

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…

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

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

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

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

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

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

[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;我们提供了另一…

jersey spring_教程–带有Jersey和Spring的Java REST API设计和实现

jersey spring想要在Java中使用REST&#xff1f; 然后您来对地方了&#xff0c;因为在博客文章中&#xff0c;我将向您介绍如何“美丽”地设计REST API&#xff0c;以及如何使用Jersey框架在Java中实现它。 本教程中开发的RESTful API将演示针对存储在MySql数据库中的播客资源的…

html5 css svg,6款基于SVG的HTML5CSS3应用和动画

1、CSS3/SVG质感背景小图标 镂空效果图标按钮今天我们来分享一款用CSS3和SVG实现的质感背景小图标&#xff0c;鼠标滑过图标时出现镂空的效果&#xff0c;并且有质感背景的描边&#xff0c;效果非常不错。2、HTML5 SVG Tab滑块菜单 非常酷的Tab菜单之前我们分享过很多HTML5/CSS…

python 矩阵合并_numpy 的矩阵合并与分割

aiblog4.jpg 这次分享下numpy中矩阵的合并与分割&#xff0c;希望能帮助到大家。 在此附上视频链接 一、引入numpy第三方库 首先我们引入numpy这个第三方库,如果有同学没安装numpy可在命令行中pip install numpy进行安装(Mac用户 sudo pip3 install numpy) import numpy as np …

rto净化效率计算公式_你了解废气处理设备RTO蓄热式热氧化炉的工作原理么?

RTO蓄热式热氧化炉的净化效果以及稳定性都是相当不错的&#xff0c;但是由于其一次性投入成本高&#xff0c;许多企业都选择了放弃。但是科盈小编想要说的是从其99&#xff05;的净化效果、换热系统、新型蜂窝技术以及日后的运行成本费用来看&#xff0c;这个费用就显得很可观了…

Selenium 4相对定位器如何改变您的测试方式?

网页可以包含许多Web元素或GUI元素&#xff0c;例如单选按钮&#xff0c;文本框&#xff0c;下拉菜单&#xff0c;输入等。Selenium自动化测试中的Web定位器用于对页面的Web元素执行不同的操作。 毫不奇怪&#xff0c;作为新的Selenium用户&#xff0c;我们要学习的第一件事是S…

电商 php 颜色数据怎么敲?_来客说电商|电商系统开发注意事项

来客B2B2C多用户电商系统打造支持自营招商入驻经营模式的电商平台&#xff08;类似京东、天猫的经营模式&#xff09;&#xff0c;创新模块化设计整合运营商&#xff0c;供货商&#xff0c;批发商&#xff0c;入驻商&#xff0c;分销商&#xff0c;门店于一体&#xff0c;各个模…

朗读评价语言集锦_英语老师批改作业时的精彩评语集锦,超实用!

01你的作业评语&#xff0c;学生看得懂吗&#xff1f;评语是写给学生看的&#xff0c;所以一方面评语要使用学生能看得懂的英语来写&#xff0c;所使用的词汇和语法不能过高或过低于学生的现有水平&#xff0c;要切合学生的实际情况&#xff0c;符合学生的个性心理发展需要&…

u盘安装linux 提示no such device_Linux 网络基础设计

误删网卡配置文件解决思路本回复案例仅在Centos 7如试验成功其它系统无从考究,仅供参考请在root用户模式下配置获得设备名称DEVICE常见使用ifconfig,如果尚未安装请先安装如果只能找到Io和virbrN(Nnumber),请使用ifconfig -a复制名字(红线处,要以你机器的为准!)创建配置文件tou…