java 异常的实例详解

2025-05-29 0 19

java 异常的实例详解

1、异常的定义:程序在运行时出现不正常情况。

异常的划分:

Error:严重的问题,对于error一般不编写针对性的代码对其进行处理。

Exception:非严重的问题,对于exception可以使用针对性的处理方式进行处理。

2、异常的处理:(固定格式)

?

1

2

3

4

5

6

7

8

9

10

11
try

{需要被检测的代码;}

catch(异常类 变量)

{处理异常的代码(处理方式);}//这里应当是要有针对性的处理方式

finally

{一定会执行的语句;}//通常是关闭资源的代码,因为资源必须得到释放

对多异常的处理方式:

1、声明异常时,建议声明更为具体的异常,这样处理起来就更加的具体。

2、对方声明几个异常,就对应及格catch块,不要定义多余的catch块,如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。

*在进行catch处理时,catch中一定要定义具体的处理方式。

*catch是用于处理异常,如果没有catch就代表异常没有被处理过,如果该异常是检测时异常,那么必须声明。

Runtime异常:(即运行时异常

是Exception中一个特殊的子类异常

如果在函数内抛出该异常,函数上可以不用声明,编译一样通过;如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过。

之所以用在函数上声明,是因为不需要让调用者处理。

异常在子父类覆盖中的体现;

1,子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。
2,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
3,如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常

如果子类方法发生了异常。就必须要进行try处理。绝对不能抛。

throws 和 throw 的区别:

throws:使用在函数上(小括号和大括号之间),后面跟的是异常类,可以跟多个。中间用“,”(逗号)隔开。

throw: 使用在函数内,后面跟的是异常对象。throw后面不能加语句,因为throw后面的语句无法执行到。

习题练习:

?

1

2

3

4

5

6

7

8

9
/*需求:毕老师用电脑上课。

分析:

先写出正常运行时的代码:电脑开机后上课

分析电脑会出现的问题,如:蓝屏,冒烟

此时需要自定义两个“蓝屏,冒烟“”自定义异常,封装成对象。

蓝屏后,电脑重启,之后继续上课

电脑冒烟后,出现了老师的问题,不能上课了,可以先做练习,毕老师将问题抛给校长。此时抛出的问题不再是电脑冒烟,而应该是老师不能上课了

问题抛给校长后,校长catch后给出解决方案

*/

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99
class LanPingException extends Exception //自定义蓝屏异常

{

LanPingException(String message)

{

super(message);

}

}

class MaoYanException extends Exception//自定义冒烟异常

{

MaoYanException(String message)

{

super(message);

}

}

class NoclassException extends Exception//自定义不能上课异常

{

NoclassException(String message)

{

super(message);

}

}

class Computer

{

private int state = 2;//硬性规定电脑状态

//问题是在运行时发生的,所以得定义在运行时

public void run()throws LanPingException,MaoYanException//因为有可能出现错误,所以必须先声明

{

if (state==2)

{

throw new LanPingException("电脑蓝屏了。。。");//因为电脑不能自己处理,所以抛给了老师

}

if (state==3)

{

throw new MaoYanException("电脑冒烟了。。。");

}

System.out.println("电脑开机,运行中。。。。");

}

public void restart()

{

System.out.println("电脑重启。。。。");

}

}

class Teacher

{

private String name;

private Computer comp;

Teacher(String name)

{

this.name = name;

comp = new Computer();//初始化时老师就有电脑了

}

public void test()

{

System.out.println("做练习");

}

public void teach() throws NoclassException//标识应该是抛出去的异常,能够进行处理的

{

try

{

comp.run();//讲课,要先开启电脑

}

catch (LanPingException e)//抛出了两个异常,必须用两个catch

{

System.out.println(e.getMessage());

comp.restart();

}

//这个问题抛给老师的话依旧无法解决,应该抛出对应的问题,这里老师抛出的问题应该是不能上课了

catch (MaoYanException e)

{

test();//不能上课,可以先布置练习,这个必须在throw 之前,因为throw之后的语句不会执行

throw new NoclassException(e.getMessage()+",无法继续上课");

}

System.out.println(name+",上课中。。。。");

}

}

class ExceptionTest

{

public static void main(String[] args)

{

Teacher t = new Teacher("毕老师");//指定一个老师

try

{

t.teach();//老师运行这个方法

}

catch (NoclassException e)//抓住对应的抛出的问题

{

System.out.println(e.toString());//打印出问题原因

System.out.println("自习或者放假");//处理办法

}

}

}

?

1

2

3

4

5

6

7

8

9

10

11
当电脑状态为1时,输出为:

电脑开机,运行中。。。。

毕老师,上课中。。。。

当电脑状态为2时,输出为:

电脑蓝屏了。。。

电脑重启。。。。

毕老师,上课中。。。。

当电脑状态为3时,输出为:

做练习

NoclassException: 电脑冒烟了。。。,无法继续上课

自习或者放假 <br>

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:http://blog.csdn.net/u012324102/article/details/53535617

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 java 异常的实例详解 https://www.kuaiidc.com/114703.html

相关文章

发表评论
暂无评论