美文网首页
2020-02-28-Java

2020-02-28-Java

作者: hhp895 | 来源:发表于2020-02-28 15:04 被阅读0次

1.异常的概念

exception
异常不是程序的错误,而是程序在运行时发生的意外,开发者在开发时没有预料到,或者在代码中故意抛出异常(发生一个消息,表示这个程序有问题),没有处理的异常会导致程序终止运行。

1.1异常是什么,有异常存在

【图片】


Snipaste_2020-02-28_13-47-33.png

1.2异常是需要处理的

【异常不处理的图片】


Snipaste_2020-02-28_13-49-26.png

如何处理?
引入异常处理机制。

2.异常处理机制

使用try-catch
try:表示可能抛出异常的部分。使用try来表示某段程序可能存在异常
catch:捕获异常部分,捕获后可以来处理。
先try后catch

语法:

try{//可能发生异常的部分
}
catch(exception ex){//捕获异常后如何处理,捕获到的异常会使用ex来表示。
}
try和catch如何编写?
【图片】


Snipaste_2020-02-28_13-56-57.png

使用快捷alt+/
使用try,catch可以避免异常发生时,程序终止运行,从而保持程序继续向下执行。
【案例】

3.异常的分类

不同类别的异常,处理手段不一样,分类的目的是让异常更为具体。
Object-->Throwable
Throwable:Error和Exception
Error:AWTError、ThreadDeath等
Exception:RuntimeException和其他。
RuntimeException:ArithmeticException、NullPointerException、NumberFormatException等等。
【异常层次】


Snipaste_2020-02-28_14-13-41.png

通常异常分为checked和Runtime:
checked异常,在编译阶段发生。会导致编译不能进行下去。
Runtime异常,在运行阶段发生。会导致运行不能进行下去。

注意:

程序是先编译后执行。编译阶段在运行前。

4.try和catch变体形式

4.1多个catch

程序会按顺序匹配执行catch;但是只会匹配一个。

【案例】


Snipaste_2020-02-28_15-22-33.png Snipaste_2020-02-28_15-22-46.png

思考:
catch的顺序能不能变?
(1)多个catch同时使用,catch中捕获的异常越具体(也就是子类异常)越需要写在上面。遵循的原则就是你考虑的东西越具体,越要早匹配。所以按异常分类,子类在上书写,父类在下书写。


Snipaste_2020-02-28_14-34-51.png

(2)同级的异常,可以互换位置。(同一个父类下的子类)


1.png

4.2finally

无论如何都会往下执行。
意义:通常是放置一些释放资源的代码。哪些属于释放资源的代码?
释放磁盘空间,释放内存,释放已经占有的资源。
注意:finally中是必须要执行的代码,如果再次出现异常怎么办?继续try/catch


Snipaste_2020-02-28_15-22-46.png

5.throws

抛出

5.1为什么要throws?

希望异常交给合理的人来处理。

5.2throws的方式?

两种方式:
(1)原处throws异常
【案例】


Snipaste_2020-02-28_15-25-04.png

(2)在方法定义时throws异常。
【图片】出现异常的方法,需要使用try和catch包裹


Snipaste_2020-02-28_14-59-32.png

【案例】


Snipaste_2020-02-28_15-02-54.png

注意:方法定义时抛出的异常不能比方法内出现的异常级别小(级别是指类的层次)
作业:
模拟电商购买场景:
(1)第一步:提示用户登录,用户输入账号和密码。账号密码不对,抛出异常。
(2)第二步:登录后,输入购买商品,如果商品名不是指定名称,抛出异常。
(3)第三步:输入购买数量。如果不合法抛出异常。
要求:使用try/catch来处理程序异常,可以使用主动throw异常,也可以使用程序运行时自身发生的异常。并且处理他们。

相关文章

  • 2020-02-28-Java

    1.异常的概念 exception异常不是程序的错误,而是程序在运行时发生的意外,开发者在开发时没有预料到,或者在...

网友评论

      本文标题:2020-02-28-Java

      本文链接:https://www.haomeiwen.com/subject/lptlhhtx.html