您的位置:首页 > 编程语言 > Java开发

java基础系列(八)--异常和处理异常

2018-02-24 16:23 295 查看

异常

程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。

异常分类和关系

Java标准裤内建了一些通用的异常,这些类以Throwable为顶层父类。

Throwable又派生出Error类和Exception类。

Error : Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。

Exception : Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。



异常分类

Exception 分为两大类:

非检查异常(unckecked exception)

检查异常(checked exception)

非检查异常(unckecked exception)

Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用try…catch…finally)这样的异常,也可以不处理。

检查异常(checked exception)

除了Error 和 RuntimeException的其它异常。javac强制要求程序员为这样的异常做预备处理工作(使用try…catch…finally或者throws)。在方法中要么用try-catch语句捕获它并处理,要么用throws子句声明抛出它,否则编译不会通过。

名词解释:

1、检查性异常: 不处理编译不能通过

2、非检查性异常:不处理编译可以通过,如果有抛出直接抛到控制台

3、运行时异常: 就是非检查性异常

4、非运行时异常: 就是检查性异常

异常处理

捕获异常

使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。

try/catch代码块中的代码称为保护代码,使用 try/catch 的语法如下:

try
{
// 程序代码
}catch(ExceptionName e1)
{
//Catch 块
}


抛出异常

如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。

也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。

import java.io.*;
public class className
{
public void deposit(double amount) throws RemoteException
{
// Method implementation
throw new RemoteException();
}
//Remainder of class definition
}


面试重点

Exception 和 Runtimeexception 关系 Runtimeexception 是 Exception 的子类 , 所有的Runtimeexception 不需要强制处理,程序正常编译,除了Runtimeexception 之外的 Exception 其他子类需要 强制处理 try-catch 或者 throw | | throws 否则程序无法通过编译 javac

try-catch-finally return 执行顺序和关系 return 一定会执行,在finally之后

return与finally并没有明显的谁强谁弱。在执行时,是return语句先把返回值写入但内存中,然后停下来等待finally语句块执行完,return再执行后面的一段。如果在finally修改返回值内容 ,按情况返回结果: 基本数据类型 不变 返回之前的结果 ; 引用数据类型 改变内容 返回finally修改之后的结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: