第7章 不妆空散粉无树独飘花-异常处理_第1页
第7章 不妆空散粉无树独飘花-异常处理_第2页
第7章 不妆空散粉无树独飘花-异常处理_第3页
第7章 不妆空散粉无树独飘花-异常处理_第4页
第7章 不妆空散粉无树独飘花-异常处理_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2025/3/10零基础快乐学Java新的问题灵动的星空活跃了思维,跳动的思维又为新的创作带来了无限可能。既然流星的飞坠过程可以模拟,那么雨滴下落呢?雪花飘飞呢?甚至可以改变移动方向,去模拟太阳的东升西落,青烟袅袅,水花四溅,田野漫步……在流星项目中,细心的您会发现,流星稍纵即逝,速度很快。如果用同样的方法去模拟雪花飘飞的场景,就显得过于不真实,那么,如何让雪花优雅地下落呢?1异常处理第7章不妆空散粉,无树独飘花——异常处理大雪纷飞2项目拓展小球的碰撞与反弹会划水的小乌龟交通信号灯指挥车辆行进举一反三3异常处理什么是异常异常类层次结构异常处理机制异常的抛出与捕获大雪纷飞一片雪花的下落雪花优雅地飘飞雪花漫天飞扬设计思路:首先,画一片雪花并让其下落。其次,控制雪花的下落速度,让其优雅地飘飞。最后,实现雪花漫天飘扬。一、大雪纷飞voidstateChange(){//定义状态改变方法

flag=(int)(Math.random()*2);//对状态变量赋随机值0,1,2 if(flag==0){//向右下

x++; y++; } if(flag==1){//向左下

x--; y++; } if(flag==2){//垂直向下

y++; }}一、大雪纷飞1、一片雪花的下落问题:雪花下落的过程中如何左右移动呢?控制雪花下落速度的思路很简单,就是让它休息,即sleep()。2、雪花优雅地飘飞一、大雪纷飞try{Thread.sleep(20);}catch(Exceptione){}代码中sleep()方法是有风险的,一旦休眠会有醒不过来的可能,因此Java要求对这些可能出现的风险进行预防。3、雪花漫天飞扬一、大雪纷飞当纵坐标大于等于边界值900时再将它重新赋值为0。if(y[i]>=900){ y[i]=0;}对雪花大小的设置:(1)int[]size=newint[300];(2)size[i]=(int)(Math.random()*40);(3)g.setFont(newFont(“”,0,size[i]))雪花大小不同连续不断地下雪第7章不妆空散粉,无树独飘花——异常处理2大雪纷飞异常处理1项目拓展小球的碰撞与反弹会划水的小乌龟交通信号灯指挥车辆行进举一反三3异常处理什么是异常异常类层次结构异常处理机制异常的抛出与捕获大雪纷飞一片雪花的下落雪花优雅地飘飞雪花漫天飞扬

异常是指不期而至的各种状况,如:比如2020年初的新冠疫情,2021年的郑州暴雨、山西洪灾,再如一起交通事故、一场火灾、一次地震等等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。1、尽可能避免、杜绝异常,如若不可避免,则尽可能减少其发生几率或预先准备好处理异常的措施。2、当异常发生时,为避免严重后果应尽早处理,必要时进行求助。一般越早处理损失越小。二、异常处理1、什么是异常一个可行的程序,需要编译成功和运行无错两方面的配合。有些错误在设计和调试阶段是不易察觉的,如:文件找不到、网络连接失败、非法参数等。【例7-1】算术运算异常【例7-2】空指针异常【例7-3】数组越界异常二、异常处理1、什么是异常二、异常处理2、异常类层次结构ThrowableErrorVirtualMachineErrorOutOfMemoryErrorStackOverFlowErrorAWTErrorExceptionIOExceptionFileNotFoundExceptionEOFExceptionSQLExceptionRuntimeExceptionArithmeticExceptionNullPointerExceptionArrayIndexOutOfBoundsExceptionClassCastExceptionArrayStoreException……Throwable:

所有的异常的共同祖先。它有两个重要的子类:Exception(异常)和Error(错误)。Error(错误):JVM自身出现的问题,是无法处理的异常。如Java虚拟机运行错误(VirtualMachineError)、类定义错误(NoClassDefFoundError)等,超出了应用程序的控制和处理能力之外。Exception(异常):是程序本身可以处理的异常,如前例。Exception异常分运行时异常和非运行时异常(编译异常)。程序中应当尽可能去处理这些异常。运行时异常:Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。编译异常:语法错误。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。二、异常处理二、异常处理二、异常处理二、异常处理

Java提供了一套完整的异常处理机制,有助于提高程序的健壮性(充分考虑了所有可能的异常情况)与可维护性。仅靠返回值难以表达异常详细信息。异常代码与正常代码混合在一起,影响程序可读性。问题规模增大后这种处理方式成为程序维护障碍。传统异常处理方式:eg1&eg2。二、异常处理publicclassCar{publicintrun(){//正常代码if(无故障)return1;//异常代码elsereturn0;}}publicvoidgotoWork(){ if(run()==1){ System.out.println("driveacar"); }else{ if(car!="OK"){ System.out.println("repairacar"); } if(oil!="enough"){ System.out.println("addoil"); } if(road!="Yes"){ System.out.println("walk"); } }}传统异常处理方式二、异常处理模式:采用“抛出—捕获”方式。目的:确保不会产生死机、死循环或其他损害,保证程序运行的安全性。代码块:

try{//可能会产生异常的代码}catch(异常类1参数){异常处理语句组;}catch(异常类2参数){异常处理语句组;}……}finally{异常处理语句组;}异常处理机制二、异常处理异常的抛出:程序在执行过程中发生异常,一个异常类对象被自动生成,该异常对象会被交给JVM。可以由系统来抛出异常,也可以在代码中强制抛出某个类型的异常。异常的捕获:JVM在收到异常对象时,查找处理这一异常的代码,如果有则把异常对象交给它处理。异常总是先被抛出,后被捕捉的。对于可查异常必须捕捉、或者声明抛出。二、异常处理4、异常的抛出与捕获二、异常处理4、异常的抛出与捕获1)自动抛出,系统异常类捕获二、异常处理——异常的抛出与捕获一条try语句可以跟多个catch语句和一个finally语句,但try不能单独出现,必须紧跟至少一个catch语句或finally语句。捕获异常的匹配原则:

抛出对象与catch参数类型相同

抛出对象与catch参数类的子类

按先后顺序捕获,且只捕获一次。【例7-4】运算异常处理(一)【例7-5】运算异常处理(二)【例7-6】带有return语句的异常处理二、异常处理——异常的抛出与捕获2)强制抛出,系统异常类捕获throw异常类对象;【例7-7】利用throw强制抛出异常3)强制抛出,自定义异常类捕获自定义异常类的定义格式为:class类名extends异常类{}【例7-8】利用自定义异常类处理异常二、异常处理——异常的抛出与捕获4)强制抛出,上一级代码捕获返回类型方法名([参数列表])throws异常类{ throw异常类对象;}【例7-9】利用throw抛出异常【例7-10】网课中异常的抛出与捕获void

method1()

throws

IOException{}

//合法

void

method2(){

//编译错误,必须捕获或声明抛出IOException

method1();

}

void

method3()throws

IOException

{

//合法,声明抛出IOException

method1();

}

void

method4()throws

Exception

{

//合法,声明抛出Exception,IOException是Exception的子类

method1();

}

void

method5(){

//合法,捕获IOException

try{

method1();

}catch(IOException

e){…}

}

void

method6(){

//编译错误,必须捕获或声明抛出Exception

try{

method1();

}catch(IOException

e){throw

new

Exception();}

}

void

method7()throws

Exception{

//合法,声明抛出Exception

try{

method1();

}catch(IOException

e){throw

new

Exception();}

}

二、异常处理——异常的抛出与捕获第7章不妆空散粉,无树独飘花——异常处理大雪纷飞1项目拓展小球的碰撞与反弹会划水的小乌龟交通信号灯指挥车辆行进异常处理2异常处理什么是异常异常类层次结构异常处理机制异常的抛出与捕获大雪纷飞一片雪花的下落雪花优雅地飘飞雪花漫天飞扬3举一反三三、举一反三1、小球的碰撞与反弹publicvoidpaint(Graphicsg){super.paint(g); //调用父类中的paint方法g.fillOval(x+=stateX,y+=stateY,30,30);//根据状态改变量来调整小球位置

if(y>342){//下边界 stateY=-1;}if(y<0){//上边界 stateY=1;}if(x>465){//右边界 stateX=-1;}if(x<0){//左边界 stateX=1;}repaint();//重新调用paint方法}泡泡的飞行、破裂、产生等同雪花飘飞项目类似,相信您可以自行实现。对乌龟划水或爬行的实现也同雪花下落姿态的控制思路一致。比如对于乌龟划水可以定义两种状态,一种是两条前腿向上移动,一种是身体移动,两种状态交替出现即可模拟划水过程。三、举一反三2、会划水的小乌龟三、举一反三3、交通信号灯指挥车辆行进提示:红绿灯的转换可以用计数的方法,如:time++;if(time>180){ c=Color.green;//绿灯}当然,实现方法有很多种,选择其中一种即可。小结本章模拟了一个雪花飘飞的场景,通过让雪花优雅地下落引入了异常处理的概念,并通过大量实例详细阐述了Java异常处理机制。另外,对于雪花下落的处理方法可以运用到其它项目中,比如小球的碰撞与反弹,小动物的爬行,面部表情的变化,车辆的行进,泡泡的膨胀与破裂,水滴的飞溅……更多的项目等待您去发现与实践,期待您的创意作品,加油!课后练习与思考题1、Throwable,Err

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论