浅谈Java异常
2017-01-16 20:47
344 查看
何为异常?当Java程序违背了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常。
java.lang.Throwable是所有异常的父类!
Throwable有两个子类,分别是Error,Exception.
Error表示非常严重的错误,恢复是一件很困难的事情。
Exception表示一种设计或实现的问题。而Exception又分为受检异常和非受检异常:
1.受检异常(CheckedException):需要抛出异常或用try...catch语句显示的捕获,比如IOException.
2.非受检异常或运行时异常(RuntimeException):不需要用try...catch语句显示的捕获异常,
常见的有:
NullPointerException--------空指针异常
ClassCastException--------类型强制转换异常
IndexOutOfBoundsException--------数组下标越界异常
IllegalArgumentException--------传递非法参数异常
对于try里面发生的异常,他会根据发生的异常和catch里面的进行匹配(怎么匹配,按照catch块从上往下匹配),当它匹配某一个catch块的时候,他就直接进入到这个catch块里面去了,后面在再有catch块的话,它不做任何处理,直接跳过去,全部忽略掉。如果有finally的话进入到finally里面继续执行。
换句话说,如果有匹配的catch,它就会忽略掉这个catch后面所有的catch。
关于finally的面试题:
public class Test{
public static void main(String[] args){
System.out.println(new Test().test());
}
public int test(){
int res = 1;
try{
throw new Exception();
}catch(Exception e){
return res;
}finally{
res = 2;
System.out.println("finally");
}
}
}
程序输出结果为:
finally
1
java.lang.Throwable是所有异常的父类!
Throwable有两个子类,分别是Error,Exception.
Error表示非常严重的错误,恢复是一件很困难的事情。
Exception表示一种设计或实现的问题。而Exception又分为受检异常和非受检异常:
1.受检异常(CheckedException):需要抛出异常或用try...catch语句显示的捕获,比如IOException.
2.非受检异常或运行时异常(RuntimeException):不需要用try...catch语句显示的捕获异常,
常见的有:
NullPointerException--------空指针异常
ClassCastException--------类型强制转换异常
IndexOutOfBoundsException--------数组下标越界异常
IllegalArgumentException--------传递非法参数异常
异常捕获:
对于try..catch捕获异常的形式来说,对于异常的捕获,可以有多个catch。对于try里面发生的异常,他会根据发生的异常和catch里面的进行匹配(怎么匹配,按照catch块从上往下匹配),当它匹配某一个catch块的时候,他就直接进入到这个catch块里面去了,后面在再有catch块的话,它不做任何处理,直接跳过去,全部忽略掉。如果有finally的话进入到finally里面继续执行。
换句话说,如果有匹配的catch,它就会忽略掉这个catch后面所有的catch。
关于finally的面试题:
public class Test{
public static void main(String[] args){
System.out.println(new Test().test());
}
public int test(){
int res = 1;
try{
throw new Exception();
}catch(Exception e){
return res;
}finally{
res = 2;
System.out.println("finally");
}
}
}
程序输出结果为:
finally
1
解释:
return之前跳到finally,此时要return 的值已经被存到一个局部引用变量里了,finally中对res的改变对返回值没有影响相关文章推荐
- 浅谈.net和Java的异常类型设计
- 浅谈java异常[Exception]
- 【Java心得总结二】浅谈Java中的异常
- 浅谈我对Java异常类的了解
- 浅谈java异常[Exception]
- java浅谈 异常处理与常用类
- 浅谈java异常[Exception]
- 黑马程序员——浅谈java中的异常机制
- 浅谈java异常
- java - 异常浅谈
- 浅谈java异常[Exception]
- 浅谈java异常[Exception]
- 【java异常】浅谈
- 浅谈java异常[Exception]
- 浅谈java异常[Exception]
- 浅谈.net和Java的异常类型设计
- 浅谈java异常[Exception]
- 【转】浅谈java异常[Exception]
- 浅谈Java异常
- java异常浅谈