第8章内部类与异常

上传人:夏** 文档编号:569309941 上传时间:2024-07-28 格式:PPT 页数:49 大小:1.35MB
返回 下载 相关 举报
第8章内部类与异常_第1页
第1页 / 共49页
第8章内部类与异常_第2页
第2页 / 共49页
第8章内部类与异常_第3页
第3页 / 共49页
第8章内部类与异常_第4页
第4页 / 共49页
第8章内部类与异常_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《第8章内部类与异常》由会员分享,可在线阅读,更多相关《第8章内部类与异常(49页珍藏版)》请在金锄头文库上搜索。

1、茬汽综蒸惺祭楞狙隐又尖苞眷至普孝涂棵谜谩霖抹雨亢欠寝诉猜挖潜特焦第8章内部类与异常第8章内部类与异常JavaJava支持在一个类中声明另一个类,这样的类称作支持在一个类中声明另一个类,这样的类称作内部类内部类,而包含内部类的类称为内部类的,而包含内部类的类称为内部类的外嵌类外嵌类。内部类的外嵌类的成员变量在内部类中仍然有效,内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。内部类中的方法也可以调用外嵌类中的方法。内部类的类体中不可以声明类变量和类方法内部类的类体中不可以声明类变量和类方法。外嵌。外嵌类的类体中可以用内部类声明对象,作为外嵌类的类的类体中可以用内

2、部类声明对象,作为外嵌类的成员。成员。燃签浸敖皿村拂藏泪尉直姬海润挚获汗仑方召讣额爬额拧危眩皇紫呀经奖第8章内部类与异常第8章内部类与异常内部类仅供它的外嵌类使用内部类仅供它的外嵌类使用,其他类不可以用某个其他类不可以用某个类的内部类声明对象。类的内部类声明对象。另外,由于内部类的外嵌类的成员变量在内部类中另外,由于内部类的外嵌类的成员变量在内部类中仍然有效,使得内部类和外嵌类的交互更加方便。仍然有效,使得内部类和外嵌类的交互更加方便。漆熊确眶婶摈瘸独督脆撤拄玄词潜蚜驮牙京疤瞪傍浙水代帕蹬谰跳熊碟继第8章内部类与异常第8章内部类与异常例例8-18-1public class RedCowFor

3、m public class RedCowForm String formName; String formName; RedCow cow; / RedCow cow; /内部类声明对象内部类声明对象 RedCowForm() RedCowForm() RedCowForm(String s) RedCowForm(String s) cow = new RedCow(150,112,5000); cow = new RedCow(150,112,5000); formName=s; formName=s; public void showCowMess() public void show

4、CowMess() cow.speak(); cow.speak(); class RedCow / class RedCow /内部类的声明内部类的声明 String cowName= String cowName=红牛红牛; ; int height,weight,price; int height,weight,price; RedCow(int h,int w,int p) RedCow(int h,int w,int p) height=h; height=h; weight=w; weight=w; price=p; price=p; void speak() void speak

5、() System.out.println( System.out.println(偶是偶是+cowName+,+cowName+,身高身高:+height+:+height+cm cm 体重体重:+weight+kg,:+weight+kg,生活在生活在+formName);+formName); 测鼎筋拽惠泡梗肢见桔晌嘎狄壬荒讲丛叶袍匣炙蔽验斥肘急柔兄庙枕冈绪第8章内部类与异常第8章内部类与异常public class Example8_1 public class Example8_1 public static void main(String args) public static

6、void main(String args) RedCowForm form = new RedCowForm( RedCowForm form = new RedCowForm(红牛农场红牛农场);); form.showCowMess(); form.showCowMess(); 悸尼跺轻锭刹伶穆流伦帛剖探弯它踩尸断浩欧摧霸陛电贾炯扯野熄竹醉撞第8章内部类与异常第8章内部类与异常8.2.1 8.2.1 和子类有关的匿名类和子类有关的匿名类创建子类对象时,除了使用父类的构造方法外还有创建子类对象时,除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类类体,此类体被认为是一

7、个子类去掉类声明后的类体,称作体,称作匿名类匿名类。匿名类就是匿名类就是一个子类一个子类,由于,由于无名可用无名可用,所以,所以不可能不可能用匿名类声明对象用匿名类声明对象,但,但却可以直接用匿名类创建一却可以直接用匿名类创建一个对象。个对象。呛馒峦揩桶翅跋镊异晋乒暗郑冗萝龚贮够曳鲸容贿召牢遵林信瓤垢质义色第8章内部类与异常第8章内部类与异常匿名类例子匿名类例子newnew Bank(Bank( ) ) 匿名类类体匿名类类体 ;假设假设BankBank是类,那么上面代码就是用是类,那么上面代码就是用BankBank的一个的一个子类(匿名)类创建的对象。子类(匿名)类创建的对象。岸趴洽触康氯叮括

8、二垃情缴湖瘫拎汉熟彭挫痘吕泽鲜拌梭塔硫欠营沧鉴茹第8章内部类与异常第8章内部类与异常由于匿名类是一个子类,但没有类名,所以在用匿名类由于匿名类是一个子类,但没有类名,所以在用匿名类创建对象时,创建对象时,要直接使用父类的构造方法要直接使用父类的构造方法。尽管匿名类创建的对象没有经过类声明步骤,但匿名对尽管匿名类创建的对象没有经过类声明步骤,但匿名对象的引用可以传递给一个匹配的参数,象的引用可以传递给一个匹配的参数,匿名类的常用的匿名类的常用的方式是向方法的参数传值方式是向方法的参数传值。匿名类匿名类可以可以继承父类的方法继承父类的方法也可以也可以重写父类的方法重写父类的方法。使用匿名类时,必然

9、是在某个类中直接用匿名类创建使用匿名类时,必然是在某个类中直接用匿名类创建对象,对象,因此匿名类一定是内部类因此匿名类一定是内部类,匿名类可以访问外,匿名类可以访问外嵌类中的成员变量和方法,嵌类中的成员变量和方法,匿名类的类体中不可以声匿名类的类体中不可以声明明staticstatic成员变量和成员变量和staticstatic方法方法铡庭焊糙凉谨致荒痊手愤恢决壁击隔氨往夷圭杨丛贬爵肿焰钵院摊肆杆揭第8章内部类与异常第8章内部类与异常例例8-28-2ShowBoardShowBoard类的类的showMess(InputAlphabet show)showMess(InputAlphabet

10、show)方法的参数是方法的参数是InputAlphabetInputAlphabet类型的对象,用户在编类型的对象,用户在编写程序时,希望使用写程序时,希望使用ShowBoardShowBoard类的对象调用类的对象调用showMess(InputAlphabet show)showMess(InputAlphabet show)输出英文字母表和输出英文字母表和希腊字母表,但系统没有提供输出希腊字母表的子类,希腊字母表,但系统没有提供输出希腊字母表的子类,因此用户可以使用匿名类来实现因此用户可以使用匿名类来实现植瘟秘置协屎宜薯做谜赘央妇寓拓籽檀载诉哗跃督缚渴练攘隶蹄军蛋墅榷第8章内部类与异常

11、第8章内部类与异常abstractabstract class class InputAlphabetInputAlphabet public abstract void input(); public abstract void input(); public class public class InputEnglishInputEnglish extendsextends InputAlphabetInputAlphabet public void input() public void input() for(char c=a;c=z;c+) for(char c=a;c=z;c+)

12、System.out.printf(%3c,c); System.out.printf(%3c,c); 东泡纽稻饲舌骋企胀菩踪催么光弄历所但襄耘椿剩坤阮拦钩揩挂罪独惺献第8章内部类与异常第8章内部类与异常public class public class ShowBoardShowBoard void showMess(InputAlphabet show) void showMess(InputAlphabet show) show.input(); show.input(); public class Example8_2 public class Example8_2 public st

13、atic void main(String args) public static void main(String args) ShowBoard board=new ShowBoard(); ShowBoard board=new ShowBoard(); board.showMess(new InputEnglish(); / board.showMess(new InputEnglish(); /向参数传递向参数传递InputAlphabetInputAlphabet的子类对象的子类对象 board.showMess(new InputAlphabet() /board.showMes

14、s(new InputAlphabet() /向参数传递向参数传递InputAlphabetInputAlphabet的匿名子类对象的匿名子类对象 public void input() public void input() for(char c=;c=;c+) / for(char c=;c=;c+) /输出希腊字输出希腊字母母 System.out.printf(%3c,c); System.out.printf(%3c,c); ); ); 邹桩刻吵票楞吱禾乔还掖谱疼傣侵妻末卞碧柳顶傻逃砌肉颓笛剃灯灵静叁第8章内部类与异常第8章内部类与异常假设假设ComputableComputable

15、是一个接口,那么,是一个接口,那么,JavaJava允许直接用接允许直接用接口名和一个类体创建一个匿名对象口名和一个类体创建一个匿名对象,此类体被认为是实现,此类体被认为是实现了了ComputableComputable接口的类去掉类声明后的类体,称作匿名接口的类去掉类声明后的类体,称作匿名类。下列代码就是用实现了类。下列代码就是用实现了ComputableComputable接口的类(匿名接口的类(匿名类)创建对象:类)创建对象:new Computable() new Computable() 实现接口的匿名类的类体实现接口的匿名类的类体; ;如果某个方法的参数是接口类型,那么可以使用接口

16、名和如果某个方法的参数是接口类型,那么可以使用接口名和类体组合创建一个匿名对象传递给方法的参数,类体组合创建一个匿名对象传递给方法的参数,类体必须类体必须要重写接口中的全部方法要重写接口中的全部方法彼噪衫亩喻堂沛裴飘赦惩养核镐梭牌觅呢握很弛循秸妄绳熄熊林三疟措泞第8章内部类与异常第8章内部类与异常例例8-38-3interface SpeakHello interface SpeakHello void speak(); void speak(); class HelloMachine class HelloMachine public void turnOn(SpeakHello hello

17、) public void turnOn(SpeakHello hello) hello.speak(); hello.speak(); public class Example8_3 public class Example8_3 public static void main(String args) public static void main(String args) HelloMachine machine = new HelloMachine(); HelloMachine machine = new HelloMachine(); machine.turnOn( new Spe

18、akHello() machine.turnOn( new SpeakHello() public void speak() public void speak() System.out.println(hello,you are welcome!); System.out.println(hello,you are welcome!); ); ); machine.turnOn( new SpeakHello() machine.turnOn( new SpeakHello() public void speak() public void speak() System.out.printl

19、n( System.out.println(你好,欢迎光临你好,欢迎光临!);!); ); ); 孺阁惨垃琢愁抢野渤霍询凝扛禽斑屈凛塞结药悔陵吏戈呕贪藻端苟秒臻唇第8章内部类与异常第8章内部类与异常所谓异常就是所谓异常就是程序运行时程序运行时可能出现一些错误可能出现一些错误JavaJava的异常出现在方法调用过程中,即在方法调用的异常出现在方法调用过程中,即在方法调用过程中抛出异常对象,终止当前方法的继续执行,过程中抛出异常对象,终止当前方法的继续执行,同时导致程序运行出现异常,并等待处理同时导致程序运行出现异常,并等待处理靠淫锅轧印韧摄倾潭炽乘邱而祖皑募筹停穗吴察胳胞睁李卖填争廷辖之朱第8章

20、内部类与异常第8章内部类与异常JavaJava中常见异常中常见异常RuntimeExceptionRuntimeException: :一些特殊的异常,比如被一些特殊的异常,比如被0 0除,数组除,数组下标越界等,下标越界等,处理比较麻烦处理比较麻烦。而且对程序的可读性以及。而且对程序的可读性以及运行效率影响很大,运行效率影响很大,因此由系统自动检测并将它们交给因此由系统自动检测并将它们交给缺省的异常处理程序缺省的异常处理程序(用户可不必对其处理用户可不必对其处理)ArithmeticExceptionArithmeticException:数学计算异常:数学计算异常ArrayStoreExc

21、eptionArrayStoreException:数组存储异常:数组存储异常NegativeArraySizeExceptionNegativeArraySizeException:负数组长度异常:负数组长度异常ArrayOutOfBoundsExceptionArrayOutOfBoundsException:数组索引越界异常:数组索引越界异常NullPointExceptionNullPointException:空指针异常:空指针异常IOException(IOException(用户必须对其处理!用户必须对其处理!) )FileNotFoundExceptionFileNotFoun

22、dException:文件未找到异常:文件未找到异常EOFExceptionEOFException:读写文件尾异常:读写文件尾异常MalformedURLExceptionMalformedURLException:URLURL格式错误异常格式错误异常SocketExceptionSocketException:SocketSocket异常异常犀盔亡衙匠鹊体葡岔存秩测茂瞳阀缎默敖煤槽亮秀带托省同誓久扁磷跺逗第8章内部类与异常第8章内部类与异常JavaJava中处理异常中处理异常Java处理异常是用5个关键字实现的trycatchfinallythrowthrows 捕获异常捕获异常 catc

23、htryfinally执行可能产生执行可能产生 异常的代码异常的代码 捕获异常捕获异常 无论是否发生异常,无论是否发生异常,代码总能执行代码总能执行手动抛出异常手动抛出异常 抛出异常抛出异常 throw声明异常声明异常 声明方法可能要声明方法可能要抛出的各种异常抛出的各种异常 throws萨墓侩铜躁歧察疯嵌摘脉及局签瞎米庇郡笨登叮杰宗干硼造莫便壤禹篙据第8章内部类与异常第8章内部类与异常 异常处理方式异常处理方式两种处理方式:两种处理方式:(1 1)使用)使用trycatchfinallytrycatchfinally结构对异常结构对异常进行捕获和处理进行捕获和处理(2 2)通过)通过thro

24、wsthrows和和throwthrow抛出异常抛出异常豹藤坦瓣挝悔敲圃蓝敛激噎诬弘形落对剩腑锨胞景虫吾吊儿积帧关穴按趾第8章内部类与异常第8章内部类与异常trycatchfinallytrycatchfinally结构结构trytry / / 可能会抛出特定异常的代码段可能会抛出特定异常的代码段 catchcatch( (异常类型异常类型1 1 引用引用1)1)/ / 如果引用如果引用1 1 被抛出,则执行这段代码被抛出,则执行这段代码 catchcatch( (异常类型异常类型2 2 引用引用2)2)/如果另外的异常引用如果另外的异常引用2 2被抛出,则执行这段代码被抛出,则执行这段代码

25、finallyfinally /无条件执行的语句无条件执行的语句 各各个个catchcatch参参数数中中的的异异常常类类都都是是ExceptionException的的某某个个子子类类,表表明明trytry部部分分可可能能发发生生的的异异常常,这这些些子子类类之之间间不不能能有有父父子子关关系系,否否则则保留一个含有父类参数的保留一个含有父类参数的catchcatch即可即可敝沥淘郊粒妨梳保抑树叫敛沁宪尖离癌笛煎自岂母腺秸澎干皮找蹈沥毋租第8章内部类与异常第8章内部类与异常说明说明(1) try(1) try将可能出现异常的代码都放在将可能出现异常的代码都放在trytry代码代码块中块中(2

26、) catch- (2) catch- 如果如果trytry内出现了异常,系统将终内出现了异常,系统将终止止trytry块代码的执行,自动跳转到所发生的异常块代码的执行,自动跳转到所发生的异常类对应的类对应的catchcatch块中。执行该块中代码块中。执行该块中代码(3) finally(3) finally是可选项,无论异常是否发生,是可选项,无论异常是否发生,该块都执行。一般用来该块都执行。一般用来善后处理善后处理善阶乓铜迁就氨傀降承命裹囤骏基旭诣膳虹阿博淹颂您宜淘认哼赌六滇演第8章内部类与异常第8章内部类与异常说明说明(4 4) catch catch与与finallyfinally不

27、能同时省略不能同时省略(5 5)try.catchtry.catch以及以及finallyfinally语句块之间不能插入任语句块之间不能插入任何代码何代码盒确啤拓抚僚磋会呈凤构姑柠隔姬遗撼副押狂态皆豺牌崇雁摸愧焊拓橡画第8章内部类与异常第8章内部类与异常例例1 1:捕获数组下标越界异常:捕获数组下标越界异常public class Exception1 public static void main(String args ) try int a = 1, 2, 3, 4, 5 , sum = 0;for (int i = 0; i = 5; i+)sum = sum + ai;System

28、.out.println(sum= + sum);System.out.println(Successfully! ); catch (ArrayIndexOutOfBoundsException e) System.out.println(ArrayIndexOutOfBoundsException detected); finally System.out.println( Programm Finished! ); 伐调片杨崩传葬架另兄贡痈喜迂彭豺汛劲挖邀寓石蛹池摘尔便裕遏得父欢第8章内部类与异常第8章内部类与异常例例2 2 :捕获算术异常:捕获算术异常public class Exce

29、ption2 public class Exception2 public static void main(String args) public static void main(String args) trytry int x, y;int x, y;x = 15;x = 15;y = 0;y = 0;System.out.println(x / y);System.out.println(x / y);System.out.println(Computing successfully!);System.out.println(Computing successfully!); cat

30、chcatch ( (ArithmeticExceptionArithmeticException e) e) System.out.println( ArithmeticException catched System.out.println( ArithmeticException catched !);); finallyfinally System.out.println(Finally block!);System.out.println(Finally block!); 焊轰郊皂诛蚀腻课尘噬湿循豢茵峦瓦蜕榆澳狠妨壮测娜霓忽邱前喇馈璃叫第8章内部类与异常第8章内部类与异常异常的传播过

31、程异常的传播过程如果没有如果没有catchcatch语句块捕获异常,异常将沿着方法语句块捕获异常,异常将沿着方法的调用栈一直向上传播。如果传播的过程一直没有的调用栈一直向上传播。如果传播的过程一直没有catchcatch语句块捕获,则最终传播到语句块捕获,则最终传播到mainmain方法方法,最后,最后从从mainmain方法抛出,有方法抛出,有JREJRE来处理来处理鞋价模韭阎奢滞鹤势协膊课凤窜顾肛夕衔质互嘛侗肄妓驾庐宪乌晚玲渝蹬第8章内部类与异常第8章内部类与异常public class Testpublic class Test public static void main(Strin

32、g args)public static void main(String args)/在主方法中调用在主方法中调用method1method1 method1(); method1(); static void method1()static void method1()/在在method1method1中调用中调用method2method2方法方法method2();method2(); static void method2()static void method2() int a=new int3;int a=new int3;a4=12;/a4=12;/产生下标越界异常产生下标越界

33、异常System.out.println(ok!);System.out.println(ok!); 渐姻岁鹊撮蚀钡纫倪钾专携急委摆靛涕杨吓我狈雹钟茄铬抖涝抗广刃彼赶第8章内部类与异常第8章内部类与异常异常的分类异常的分类异常可分为:异常可分为:可控异常可控异常和和执行时异常执行时异常可控异常:可控异常:即使程序本身没有问题,在某些情况下也可能发生即使程序本身没有问题,在某些情况下也可能发生比如:使用输入输出功能时,可能会由于硬件问题,比如:使用输入输出功能时,可能会由于硬件问题,使得程序无法正常从硬件取得输入或输出,这种错误使得程序无法正常从硬件取得输入或输出,这种错误是可以预期发生的。像这

34、类异常称之为是可以预期发生的。像这类异常称之为可控异常可控异常注意:注意:JavaJava规定:对于可控异常,编译器要求您必须进规定:对于可控异常,编译器要求您必须进行处理!行处理!稽萄喇秃秤杖轻跺警气解缠绵棱量赣酸舰葬芭摧厅钝带动隶橙钾造卞停验第8章内部类与异常第8章内部类与异常补补充充例例题题import java.io.*;import java.io.*;public class Testpublic class Testpublic static void main(String args)public static void main(String args) trytry Buf

35、feredReader buf=new BufferedReader buf=new BufferedReader(new InputStreamReader(System.in);BufferedReader(new InputStreamReader(System.in);System.out.println(System.out.println(请输入整数请输入整数););int input=Integer.parseInt(buf.readLine();int input=Integer.parseInt(buf.readLine();System.out.println(input

36、=+input);System.out.println(input =+input); catch(IOException e)catch(IOException e) System.out.println(I/O System.out.println(I/O异常异常);); catch(NumberFormatException e)catch(NumberFormatException e) System.out.println( System.out.println(输入必须为整数输入必须为整数);); 计王桨嗅当秀砖悟莆偶盈鹿跨船始施续申业恰借怎荣庆悲贩糜影障呢测帮第8章内部类与异常第

37、8章内部类与异常说明说明IOExceptionIOException是可控异常,是可预期会发生的异常。是可控异常,是可预期会发生的异常。编编译器要求您必须处理!译器要求您必须处理!注意:异常一旦丢出就不会回到原点注意:异常一旦丢出就不会回到原点NumberFormatExceptionNumberFormatException是执行时异常。是执行时异常。所谓的执行时异常就是发生在程序执行期间,并不一定所谓的执行时异常就是发生在程序执行期间,并不一定可预测它的发生。可预测它的发生。且编译器不要求您一定要处理执行时且编译器不要求您一定要处理执行时异常。异常。对于执行时异常若没有处理,则异常会一直往

38、外丢,最对于执行时异常若没有处理,则异常会一直往外丢,最后由后由JVMJVM来处理来处理你缨曼袄砸脂拐申都残慈呛蔽涯塔蛰通况桃鲸娥禁氰张溢凌妊酮蹿胞帝肾第8章内部类与异常第8章内部类与异常抛出异常抛出异常1 1 抛出异常语句抛出异常语句2 2 抛出异常选项:抛出异常选项:throwsthrows蔷刊跺曹政竞曹嘶扑批撇暗净烯呐沼干抗鹃脯熟雄短蓖枣类翅酒槐萧拯翟第8章内部类与异常第8章内部类与异常什么叫异常的抛出什么叫异常的抛出如果某个方法里面有异常,并且没有被捕获,那么其如果某个方法里面有异常,并且没有被捕获,那么其会一层一层上报给调用者。会一层一层上报给调用者。岔草荷躁蛊昏九濒嚎疯赘裂除殖捉封

39、屎屏琅刮衍玲镭宾钓哨厦齐吭坪落婿第8章内部类与异常第8章内部类与异常public class Testpublic class Test public static void main(String args)public static void main(String args) a(); a(); System.out.println( System.out.println(恭喜你,调用方法成功!恭喜你,调用方法成功!);); static void a()static void a() trytry b();b(); catch(RuntimeException re)catch(Run

40、timeException re) System.out.println(System.out.println(异常在异常在a a方法被解决掉!方法被解决掉!);); static void b()static void b() c();c(); static void c()static void c() int a=new int3;int a=new int3;a4=12;a4=12; 小小例例题题缸畅锈抿斥樟戌次咋钵俗泳剃竹宣艾岩蔑涅成篱莫炼周哩既涉管碎郡蛙杯第8章内部类与异常第8章内部类与异常1 1 抛出异常语句抛出异常语句程序员可以自己通过程序员可以自己通过throwthrow语句

41、抛出异常。语句抛出异常。throwthrow语句的格式如下语句的格式如下: : throw new throw new 异常类名(信息)异常类名(信息)异常类名可以是系统异常类名,也可以是自定义的异异常类名可以是系统异常类名,也可以是自定义的异常类名常类名“ “信息信息” ”是可选信息。若提供了信息,是可选信息。若提供了信息,toString()toString()方方法的返回值中将增加该信息的内容法的返回值中将增加该信息的内容遂慕汉住周述搽油欣梨少漏火跺纽剃膛儡踢景尘垄尘启憎概妇猫饺吧锤迈第8章内部类与异常第8章内部类与异常例例3 3public class Exception3 publi

42、c class Exception3 public static int Sum(int n) public static int Sum(int n) if (n 0)if (n 0)throwthrow new new IllegalArgumentExceptionIllegalArgumentException(n(n应该为正整数!应该为正整数!););int s = 0;int s = 0;for (int i = 0; i = n; i+)for (int i = 0; i = n; i+)s = s + i;s = s + i;return s;return s; public

43、static void main(String args) public static void main(String args) try try int n = Integer.parseInt(args0);int n = Integer.parseInt(args0);System.out.println(Sum(n);System.out.println(Sum(n); catch (ArrayIndexOutOfBoundsException e) catch (ArrayIndexOutOfBoundsException e) System.out.println(System.

44、out.println(命令行为:命令行为: + java Exception3 + java Exception3 );); catch (NumberFormatException e2) catch (NumberFormatException e2) System.out.println(System.out.println(参数参数应为整数应为整数!);!); catch (IllegalArgumentException e3) catch (IllegalArgumentException e3) System.out.println(System.out.println(错误参

45、数错误参数: + e3.toString();: + e3.toString(); finally finally System.out.println(System.out.println(程序结束程序结束!);!); 镇粪靖委追煽邓褒汉衍丫迫恿患束别艺车歹霓郸利时阵愧娥令槽奸希治盲第8章内部类与异常第8章内部类与异常2 2 抛出异常选项抛出异常选项为了明确指出一个方法不捕获某类异常为了明确指出一个方法不捕获某类异常,而让调用该方法而让调用该方法的其他方法捕获该类异常的其他方法捕获该类异常,可以在声名方法的时候,使用,可以在声名方法的时候,使用throwsthrows可选项,抛出该类异常。可

46、选项,抛出该类异常。格式如下:格式如下: 修饰符修饰符 返回值类型名返回值类型名 方法名方法名 参数表参数表 throwsthrows 异常异常类型名类型名 方法体方法体 胳伦眷颐伪藐淤弯咳虞铣溃奶粤次踢颇悟搪内蛾掣胶豌抱捎丘骸渴出友汉第8章内部类与异常第8章内部类与异常例例4 4抛出异常方法抛出异常方法public class Exception4 public class Exception4 public static int Sum() public static int Sum() throwsthrows NegativeArraySizeException NegativeArr

47、aySizeException int s = 0;int s = 0;int x = new int-4;int x = new int-4;for (int i = 0; i 4; i+) for (int i = 0; i 1.0E8 | aim1.0E8 | aim0) throw new OverFlowException(); throw new OverFlowException(); else else return x*x; return x*x; public static void main(String args ) public static void main(St

48、ring args ) int y; int y; try try y= multi(); y= multi(); System.out.println(y=+y); System.out.println(y=+y); catch(OverFlowException e) catch(OverFlowException e) System.out.println(e); System.out.println(e); 蒙峙绸乔奥磊仔须箭烛乌央敌今酿禾译悲箍憋滨钮敝懒俗逗加锐潜关腻辕第8章内部类与异常第8章内部类与异常一个方法在声明时可以使用一个方法在声明时可以使用throwsthrows关键字关

49、键字声明要产声明要产生的若干个异常,并在该方法的方法体中具体给出生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象,并产生异常的操作,即用相应的异常类创建对象,并使用使用throwthrow关键字抛出该异常对象,导致该方法结关键字抛出该异常对象,导致该方法结束执行。程序必须在束执行。程序必须在try catchtry catch块语句中调用能发块语句中调用能发生异常的方法,其中生异常的方法,其中catchcatch的作用就是捕获的作用就是捕获throwthrow方方法抛出的异常对象法抛出的异常对象每侩终镑门苫弘殉爪境熔枪噪秽八网哑笺飘震性揽忿所坟剪伍敷铜影毫寓

50、第8章内部类与异常第8章内部类与异常例例8-58-5public class public class BankException BankException extends extends ExceptionException String message; String message; public BankException(int m,int n) public BankException(int m,int n) message= message=入账资金入账资金+m+m+是负数或支出是负数或支出+n+n+是正数,是正数,不符合系统要求不符合系统要求.;.; public Stri

51、ng warnMess() public String warnMess() return message; return message; 厨尾泥琵窄疡搽沃楚恩漱悼繁僻菜浇酌知卸癣背讲绥响拎男泣茅先翱赐韵第8章内部类与异常第8章内部类与异常public class Bank public class Bank int money; int money; public void income(int in,int out) throws public void income(int in,int out) throws BankException BankException if(in=0|in+out=0) if(in=0|in+out0: assert number0:负数不能是成绩负数不能是成绩; ; sum=sum+number; sum=sum+number; System.out.println( System.out.println(总成绩总成绩:+sum); :+sum); 贷吹墩哀拍填张窍锌烫矽郝骆撮豌惜行疚餐爽鸥贴讼愚手衍酌堪绥紊练筋第8章内部类与异常第8章内部类与异常

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号