黑马程序员_异常处理机制

???????????????????????????????-----Java培训、Android培训、iOS培训、.Net培训、期待与您交流!

异常

异常

??? 异常就是程序在运行时产生的异常情况。

异常的由来

??? 问题也是现实生活中的具体事物,也可以通过java 类的形式进行描述,并封装成对象。异常就是java 对不正常情况进行描述后的对象的体现。

异常体系

??????? Throwable

??????????? |--Error

??????????? |--Exception

??????????????? |--RuntimeException

Error 与Exception区别

????Error表示严重的异常,是无法处理的。

????Exception是指可以处理的,即要么向上抛要么进行捕获

异常体系特点

??? 异常体系中的所有类以及建立的对象都具有可抛性,也就是可以被 throws 和 throw 关键字所操作,且只有异常体系具备这个特点。

throws 和 throws 的用法

??? throw定义在函数内,用于抛出异常对象。

??? throws定义在函数上,用于抛出异常类,当抛出多个异常时需要用逗号进行分割。

throw 和throws注意事项

??? 当函数内容有throw抛出异常对象,并且此时未对其进行 try catch处理,此时必须在函数上用throws声明此异常或者其父类异常,否则编译失败。这种情况中RuntimeException除外,也就是函数内如果抛出的是RuntimeException异常,函数上可以不用声明该异常。

函数调用者任务

??? 当函数声明声明了异常,那么调用者在调用该函数时就必须进行异常处理,处理方式有两种:继续向上抛、进行try catch处理。

异常处理的两种方式

??? 编译时被检测异常

??????? 该异常在编译时,如果没有处理(处理包括两种方式,上文有说明)则编译失败。该异常被标识,代表这个异常是可以处理的。

??? 运行时异常(编译时不检测)

??????? 在编译时,不需要处理,编译器不进行检查。该异常的发生,建议不处理,一旦发生该类异常,就应该让程序停止运行,对需要更正的代码进行修正。

异常处理语句

??? try

??? {

??????? 需要被检测的代码;

??? }

??? catch ()

??? {

??????? 处理异常的代码;

??? }

??? finally

??? {

??????? 一定会执行的代码;

??? }

有三个结合格式:

??? 1.??? try

??????? {

???????????
?

??????? }

??????? catch ()

??????? {

??????? }

???
?

??? 2.??? try

??????? {

???????????
?

??????? }

??????? finally

??????? {

???????
?

??????? }

?????
?

???
?

??? 3.??? try

??????? {

???????????
?

??????? }

??????? catch ()

??????? {

??????? }

??????? finally

??????? {

???????
?

??????? }

异常处理注意事项

??? 1、finally中通常定义的关闭资源的代码,因为自要必须释放。

??? 2、finally只有一种情况不会执行。当执行到System.exit(0);时,finally语句不会执行

自定义异常

??? 定义异常类继承Exception或者RuntimeException。目的:

??????? 1、为了让该自定义类具备可抛性

??????? 2、让该类聚类操作异常的共性方法。

当要自定义异常信息时,可以使用父类已经定义好的功能。异常信息传递给父类的构造函数。如下:

??????? MyException(String message)

??????? {

??????????? super(message);

??? }

自定义异常思想

??? 自定义异常信息思想是按照java面向对象思想进行的,将程序中出现的特有信息进行封装。

异常的好处

??? 1、将问题进行封装

??? 2、将正常流程代码和问题代码进行分析,方便与阅读。

异常处理原则

??? 1、异常处理有两种方式:try catch或者thorws。

??? 2、调用到抛出异常功能时,抛出几个异常就要处理一个异常。

??? 3、多个catch块,父类的catch块一点要放到catch块的最后,否则编译失败。

??? 4、catch中,需要针对性的进行异常处理,不要简单的打印异常信息。 ???

??? 5、当捕获到的异常本功能处理不了时可以继续在catch中抛出。例如:

?????? try?

??????? {?

??????????? throw
new AException();?

??????? }?

??????? catch (AException e)?

??????? {

?????????? throw e;

???????? }

??????? 如果异常处理不了,但并不属于该功能出现的异常,可以将异常进行转化后再抛出和该功能相关的异常。如:

try

?? {

?????? throw
new AException();

?? }

?? catch (AException e)

?? {

?????? // 对AException处理。

?? }

比如,汇款的例子,一旦汇款失败,这时首先会将异常信息进行处理(将汇款失败的金额返回),然后给用户以提示(相当于转化后的结果)。

异常的注意事项

??? 在子父类覆盖时:

??????? 1、子类抛出的异常必须是父类异常的子类或者子集

??????? 2、如果父类或者接口没有抛出异常,子类覆盖时出现异常,只能try而不能向上抛。

时间: 2024-07-30 03:02:50

黑马程序员_异常处理机制的相关文章

黑马程序员_类加载机制

------- android培训.java培训.期待与您交流! ---------- 0.类加载机制知识体系 1.类与JVM进程 使用Java命令运行某个Java程序时,此命令会启动一个Java虚拟机进程,不管Java程序多复杂,开启了多少个线程,这个线程都运行在Java虚拟机进程里.同一个JVM的所有线程.所有变量都处于同一个进程里,都使用该JVM进程的内存区. 只有出现下列情况时,JVM进程才会终止: 1)程序正常结束. 2)程序执行到代码System.exit()或Runtime.get

黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结

黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日  day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 2.常见的软件:系统软件:如:DOS,Windows,Linux等.应用软件:如:扫雷,迅雷,QQ等. 3.什么是开发?制作软件. 二.基础知识:人机交互方式 4.软件的出现实现了人与计算机之间的更好的交互. 5.交互方式:图形化界面:这种方式简单直观,使用者易于接受,容易上手操作.命令行方式:

黑马程序员_多线程

------- android培训.java培训.期待与您交流! ---------- 多线程1.进程: 正在运行的程序所占有的内存空间,叫做进程. 线程: 一个应用程序中的子程序,对于CPU,子程序可以有一条独立的执行路径,称为线程. 线程特点:依靠一个应用程序,对于其他子程序,独立被CPU执行的2.多线程的好处: 充分利用CPU的资源,程序的同时运行,提高效率3.java中线程创建的两种方法: 第一种: 定义类继承Thread class extends Thread 重写Thread中的r

黑马程序员_高新技术_1_Java反射

------- android培训.java培训.期待与您交流! ---------- 0.反射知识体系 下图为反射整体的知识体系,把握住此图也就全局上掌握住反射所有内容. 1.反射概论 1)反射概念 其实字面上可以这么理解反射,平时使用类时都是由类new出对象,而反射则是通过对象"反射"出类的信息,好比一个人照镜子可以看到人类的特征,而看出机制就是镜子反射. 2)Java对象两种类型 Java程序中的许多对象在运行时会出现两种类型:编译时类型和运行时类型.如下代码: Person p

黑马程序员_集合

集合1.集合和对象数组的区别: 数组的长度不可变,集合的可变: 数组可以存储基本数据类型和对象,集合只能存储对象. 集合的框架图 集合派系的顶层接口Collection1.Collection集合存储对象的方法: add(E e)将元素存储到集合中 addAll(Collection c)将一个集合添加到另外的集合中2.Collection集合提取对象的方法: 通过迭代器iterator中的方法:hasNext()和next()来取出 Iterator it=new iterator(); wh

黑马程序员_学习IOS之字典常用的方法

字典是无序的 数组是有序的.字典分为:可变字典和不可变字典  不可变字典对象 NSDictionary * dict = [[NSDictionary alloc]initWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3",@"four",@"4", nil]; //value = ke

黑马程序员_交通灯管理系统

(1)项目的需求 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 例如: 由南向而来去往北向的车辆 右转车辆 由东向而来去往南向的车辆 ---- 左转车辆 平时开车过十字路口红绿灯的时候,也知道红绿灯运行的顺序 (1)任何方向的车,向右边转弯的时候,是不需要看红绿灯 (2)在十字路口,相对方向的红绿灯的工作方式是一样的,南相对与北,东相对与西,这把它分成两对 (3)红绿灯顺序,一对直行通道绿灯直行车辆,等直行变红,还是这对的车辆可以左转,等左转变红,就轮到下一对了.所以在设计程序的时候,只

黑马程序员_ 利用oc的协议实现代理模式

先说下代理模式是什么吧 定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象 而代理对象可以在客户端和目标对象之间起到中介的作用. 在看过李明杰老师的课程后,我对代理模式有了最初步的理解,虽然还很浅显 但是也明白了代理模式的 一些作用跟用法.首先使用代理模式可以降低耦合度.大大的增强了代码的弹性. 举个例子,小明想看电影,但是没时间买票 于是就拜托小强去买票 最简单的方式就是 建立一个person类(小明) 一个agent类(代理类) ag

黑马程序员_银行业务调度系统

1,项目的具体需求 银行业务调度系统 模拟实现银行业务调度系统逻辑,具体需求如下: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口. 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费.电话费之类业务的客户). 异步随机生成各种类型的客户,生成各类型用户的概率比例为: VIP客户 :普通客户 :快速客户 = 1 :6 :3.   客户办理业务所需时间有最大值和最小值,在该范围内随机设定每个VIP客户以及普通客户办理业务所需的时间,快速