Error和Exception、RuntimeException和非RuntimeException的区别

  • 时间:
  • 浏览:1

如何抛出异常

① 语法:throw(略)

② 抛出哪几个异常?对于另三个 异常对象,真正有用的信息时异常的对象类型,而异常对象某种 毫无意义。比如另三个 异常对象的类型是ClassCastException,这麼 你这名 类名本来唯一有用的信息。太大 ,在取舍抛出哪几个异常时,最关键的本来取舍异常的类名都都能能 明确说明异常情況的类。

③ 异常对象通常有某种 构造函数:某种 是无参数的构造函数;另某种 是带另三个 字符串的构造函数,你这名 字符串将作为你这名 异常对象除了类型名以外的额外说明。

④ 创建当事人的异常:当Java内置的异常完整性都是能明确的说明异常情況的以后 ,都要创建当事人的异常。都要注意的是,唯一有用的本来类型名你这名 信息,太大 无须在异常类的设计上花费精力。

捕获异常

不可能 另三个 异常这麼 被防止,这麼 ,对于另三个 非图形界面的系统任务管理器而言,该系统任务管理器会被中止并输出异常信息;对于另三个 图形界面系统任务管理器,也会输出异常的信息,本来系统任务管理器无须中止,本来返回用错误页面。 语法:try、catch和finally(略),控制器模块都要紧接在try块中间。若掷出另三个 异常,异常控制机制会搜寻参数与异常类型相符的第另三个 控制器以后 它会进入那个catch 从句,并认为异常已得到控制。一旦catch 从句刚结束了了对控制器的搜索也会停止。

捕获多个异常(注意语法与捕获的顺序)(略)

finally的用法与异常防止流程(略)

异常防止做哪几个?

对于Java来说,不可能 有了垃圾分类分类整理,太大 异常防止无须都要回收内存。本来依然有你这名资源都要系统任务管理器员来分类分类整理,比如文件、网络连接和图片等资源。

声明妙招抛出异常

① 语法:throws(略)

② 为哪几个要声明妙招抛出异常?

妙招算是抛出异常与妙招返回值的类型一样重要。假设妙招抛出异常确这麼 声明该妙招将抛出异常,这麼 客户系统任务管理器员能能 调用你这名 妙招本来还会编写防止异常的代码。这麼 ,一旦总出 异常,这麼 你这名 异常就这麼 离米 的异常控制器来防止。

③ 为哪几个抛出的异常一定是已检查异常?

RuntimeException与Error能能 在任何代码中产生,它们不都要由系统任务管理器员显示的抛出,一旦总出 错误,这麼 相应的异常会被自动抛出。而已检查异常是由系统任务管理器员抛出的,这分为某种 情況:客户系统任务管理器员调用会抛出异常的库函数(库函数的异常由库系统任务管理器员抛出);客户系统任务管理器员当事人使用throw话语抛出异常。遇到Error,系统任务管理器员一般是无能为力的;遇到RuntimeException,这麼 一定是系统任务管理器处于逻辑错误,要对系统任务管理器进行修改(离米 调试的某种 妙招);只能已检查异常才是系统任务管理器员所关心的,系统任务管理器应该且仅应该抛出或防止已检查异常。

”’注意:覆盖父类某妙招的子类妙招只能抛出比父类妙招更多的异常,太大 ,有时设计父类的妙招都会声明抛出异常,但实际的实现妙招的代码却无须抛出异常,这麼 做的目的本来为了方便子类妙招覆盖父类妙招时能能 抛出异常。”’

1 异常机制

3 异常的使用妙招

应该声明妙招抛出异常还是在妙招中捕获异常?

原则:捕捉并防止哪几个知道如何防止的异常,而传递哪几个我都这麼 乎 如何防止的异常。

再次抛出异常

①为哪几个要再次抛出异常? 在本级中,只能防止一每种内容,你这名防止都要在更高一级的环境中完成,太大 应该再次抛出异常。这麼 能能 使每级的异常防止器防止它都都能能 防止的异常。

②异常防止流程 :对应与同一try块的catch块将被忽略,抛出的异常将进入更高的一级。

②你这名非RuntimeException(IOException等等):同类异常一般是组织组织结构错误,同类试图从文件尾后读取数据等,这并完整性都是系统任务管理器某种 的错误,本来在应用环境中总出 的组织组织结构错误。 与C++异常分类的不同 :

① Java中RuntimeException你这名 类名起的无须恰当,不可能 任何异常完整性都是运行时总出 的。(在编译时总出 的错误并完整性都是异常,换句话说,异常本来为了防止系统任务管理器运行时总出 的的错误)。

② C++中logic_error与Java中的RuntimeException是等价的,而runtime_error与Java中非RuntimeException类型的异常是等价的。

①过度使用异常 :首先,使用异常很方便,太大 系统任务管理器员一般不再想要编写防止错误的代码,而仅仅是简简单单的抛出另三个 异常。这麼 做是不对的,对于完整性已知的错误,应该编写防止你这名 错误的代码,增加系统任务管理器的鲁棒性。另外,异常机制的时延很差。

② 将异常与普通错误区分开:对于普通的完整性一致的错误,应该编写防止你这名 错误的代码,增加系统任务管理器的鲁棒性。只能组织组织结构的只能取舍和预知的运行时错误才都要使用异常。

③ 异常对象含有有的信息 :一般情況下,异常对象唯一有用的信息本来类型信息。但使用异常带字符串的构造函数时,你这名 字符串还能能 作为额外的信息。调用异常对象的getMessage()、toString()不可能 printStackTrace()妙招能能 分别得到异常对象的额外信息、类名和调用堆栈的信息。本来后某种 含有的信息是前某种 的超集。

每个类型的异常的特点

**

4 关于异常的你这名问提

2 异常分类异常的分类:



① 异常的继承形态:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception,具体的RuntimeException继承RuntimeException。

② Error和RuntimeException及其子类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。

**。不可能 总出 你这名 错误,除了尽力使系统任务管理器安全退出外,在你这名方面是无能为力的。太大 ,在进行系统任务管理器设计时,应该更关注Exception体系。



Exception体系包括RuntimeException体系和你这名非RuntimeException的体系 :

① RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。防止RuntimeException的原则是:不可能 总出 RuntimeException,这麼 一定是系统任务管理器员的错误。同类,能能 通过检查数组下标和数组边界来防止数组越界访问异常。

异常机制是指当系统任务管理器总出 错误后,系统任务管理器如何防止。具体来说,异常机制提供了系统任务管理器退出的安全通道。当总出 错误后,系统任务管理器执行的流程处于改变,系统任务管理器的控制权转移到异常防止器。

传统的防止异常的妙招是,函数返回另三个 特殊的结果来表示总出 异常(通常你这名 特殊结果是你们约定俗称的),调用该函数的系统任务管理器负责检查并分析函数返回的结果。这麼 做有如下的弊端:同类函数返回-1代表总出 异常,本来不可能 函数未必要返回-1你这名 正确的值时就会总出 混淆;可读性降低,将系统任务管理器代码与防止异常的代码混爹在并肩;由调用函数的系统任务管理器来分析错误,这就要求客户系统任务管理器员对库函数有太粗 的了解。

异常防止的流程:① 遇到错误,妙招立即刚结束了了,无须返回另三个 值;并肩,抛出另三个 异常对象 。② 调用该妙招的系统任务管理器本来会继续执行下去,本来搜索另三个 能能 防止该异常的异常防止器,并执行其中的代码 。