1.
异常(Exception)。
2. Java中的异常分为两大类:
a) Checked exception (非 Runtime Exception) 非运行时异常
b) Unchecked exception(Runtime Exception) 运行时异常
3. Java中所有的异常类都会直接或间接地继承自Exception。
4. RuntimeException类也是直接继承自Exception类,它叫做运行时异常,Java中所有
的运行时异常都会直接或间接地继承自RuntimeException。
5. Java 中凡是继承自Exception而不是继承自RuntimeException的类都是非运行时异
常。 如附件图:
运行—非运行异常区分.jpg
6.
异常处理的一般结构是:
try
{
}
catch(Exception e)
{
}
finally
{
}
无论程序是否出现异常,finally 块中的代码都是会被执行的。
7. 对于非运行时异常(checked exception),必须要对其进行处理,处理方式有两种:
第一种是使用try.. catch…finally 进行捕获;第二种是在调用该会产生异常的方法所在
的方法声明throws Exception
8. 对于运行时异常(runtime exception),我们可以不对其进行处理,也可以对其进行处理。推荐不对其进行处理。
9.
NullPointerException是空指针异常,出现该异常的原因在于某个引用为null,但你却调用了它的某个方法。这时就会出现该异常。
10.
Error和Exception之间关系:程序可能会发生错误Error,可能会出现异常Exception。异常是我们可以处理的情况,但是如果程序发生了错误,我们就不能处理了。错误的危险级别比异常更高。一般情况下如果我们在代码上不做任何处理的话,程序发生了异常,那么异常代码后面的代码就不会再去执行了,但是如果我们对异常代码提前做了相应的处理(比如抛出或捕获),那么当异常发生的时候,代码还是能够继续往下执行的;而对于错误Error,我们无能为力,没有办法做任何处理,也没有任何办法让错误代码下面的代码继续执行。
系统对于运行时异常和非运行时异常的处理方式是完全不一样的。
Java里面每一个异常都是一个类,当程序执行到某一行如果出现异常的话,它会在可能产生异常的这一行代码的位置处产生一个针对于这个异常的一个异常对象(至于是哪个异常类型的对象,它会根据实际的异常情况自己去选择),这个对象是由它运行的时候来去动态的去生成的。如下代码:
Int c = 0;
Try {
Int a = 3;
Int b = 0;
C = a / b;
} catch (ArithmeticException e) {
e.printStrackTrace();
}
如果出现异常,会生成一个异常类对象,这个对象直接赋给引用变量e。
注意:
在try块里面,如果某行代码出现异常了,那么流程会直接从这行代码转到catch块里面,try块里面此行代码后面的代码不会再去执行了。Catch块完了之后再往后正常去执行catch块后面的代码。
可能发生异常的代码放到try里面。一定要执行的代码放到finally里面。
程序光有try和finally,没有catch也是可以的。也是可以正常编译通过的。这样就相当于没有对异常进行处理,和不加try、catch是一个效果,后面的代码不会再去执行。
一个try后面不论跟着多少个catch,
最多只会有一个catch被执行。
在一个方法里面我们可以
自己手工的去抛出异常,用
关键字throw,抛出的是异常对象(异常出现的时候产生的也是异常对象)。如下代码作解释:
class="java" name="code">package com.shengsiyuan.exception;
public class ExceptionTest2 {
public void method() throws Exception {
System.out.println("hello world");
// 当流程执行到这行代码的时候,我们是让这个方法抛出一个异常,所以这里要new出来一个异常对象,把它抛出来,所有的异常实际上都是对象。
// 这里我们手动抛出的异常对象和假如实际开发中这行代码出现异常程序会自动帮助我们生成一个异常对象然后抛出来这两种情况是类似的,都是生成异常对象然后抛出。这里只是总结的一个示例。
// 这行代码抛出了异常,那么在方法申明的时候也要把这个异常抛出去(throws
// Exception),告诉调用这个方法的其他方法我的这个方法会抛出异常。方法里里面和方法声明时抛出异常用的关键字不同。
throw new Exception();
}
}
所有的异常实际上都是对象。
异常的第一种方式是try catch捕获,第二种方式是抛出异常,抛出异常是由调用这个方法的那个方法对这个异常进行处理,它的处理方式也是有两种,要么捕获,要么继续抛出,继续抛给调用它的方法,就这样一层一层的网上抛。最后,main方法是我们的最后一个方法,如果main方法我们也声明为抛出的方式,那么最后异常就会抛给Java虚拟机了,由虚拟机自己去处理。
- 大小: 57.8 KB