java异常处理
java异常处理java异常体系Java的所有异常继承自Throwable,分为error(错误)和Exception(异常),Exception又分为可查异常和不可查异常,可查异常指的是编译器可以检查处理来,在编写代码的时候需要进行处理,不可查异常指的是运行时异常例如NullException(空指针异常)在编写代码的时候可以不处理;error一般是jvm(虚拟机)错误不能处理,...
java异常处理
java异常体系
Java的所有异常继承自Throwable,分为error(错误)和Exception(异常),Exception又分为可查异常和不可查异常,可查异常指的是编译器可以检查处理来,在编写代码的时候需要进行处理,不可查异常指的是运行时异常例如NullException(空指针异常)在编写代码的时候可以不处理;error一般是jvm(虚拟机)错误不能处理,异常指的是一般可以被程序处理。
try catch finally
分析一下代码,说明输出:
示例一
package xuelongjiang.baseGrama.exceptiondeal;
/**
* @Author xuelongjiang
*/
public class SimpleException {
public static void main(String[] args) {
SimpleException simpleException = new SimpleException();
System.out.println(simpleException.exceptionTest(0));
}
public int exceptionTest(int a2) {
System.out.println("a2除数:"+a2);
int a1 = 0;
try {
a1 = 10/a2;
System.out.println("处理正常。。。。。");
return a1;
}catch (Exception e){
System.out.println("异常被抓住了。。。。。");
return 0;
}finally {
System.out.println("进入finaly。。。。。");
System.out.println("a1:"+a1);
return 100;
}
}
}
输出结果:
a2除数:0
异常被抓住了。。。。。
进入finaly。。。。。
a1:0
100
示例二
package xuelongjiang.baseGrama.exceptiondeal;
/**
* @Author xuelongjiang
*/
public class SimpleException {
public static void main(String[] args) {
SimpleException simpleException = new SimpleException();
try {
System.out.println(simpleException.exceptionTest(0));
}catch (Exception e){
System.out.println("最外层的catch。。。。");
}
}
public int exceptionTest(int a2) throws Exception {
System.out.println("a2除数:"+a2);
int a1 = 0;
try {
a1 = 10/a2;
System.out.println("处理正常。。。。。");
return a1;
}catch (Exception e){
System.out.println("异常被抓住了。。。。。");
throw e;
//return 0;
}finally {
System.out.println("进入finaly。。。。。");
System.out.println("a1:"+a1);
return 100;
}
}
}
输出:
a2除数:0
异常被抓住了。。。。。
进入finaly。。。。。
a1:0
100
示例三
package xuelongjiang.baseGrama.exceptiondeal;
/**
* @Author xuelongjiang
*/
public class SimpleException {
public static void main(String[] args) {
SimpleException simpleException = new SimpleException();
try {
System.out.println(simpleException.exceptionTest(0));
}catch (Exception e){
System.out.println("最外层的catch。。。。");
}
}
public int exceptionTest(int a2) throws Exception {
System.out.println("a2除数:"+a2);
int a1 = 0;
try {
a1 = 10/a2;
System.out.println("处理正常。。。。。");
return a1;
}catch (Exception e){
System.out.println("异常被抓住了。。。。。");
throw e;
//return 0;
}finally {
System.out.println("进入finaly。。。。。");
System.out.println("a1:"+a1);
//return 100;
}
}
}
输出:
a2除数:0
异常被抓住了。。。。。
进入finaly。。。。。
a1:0
最外层的catch。。。。
根据以上代码给出结论:
如果有finally即使try 和catch中有return也不会返回,而是返回finally中的return
如果finally中没有return语句,并且try和catch中有返回语句或throw那么会执行try,catch中的返回
throw throws
在上面的示例中,我们看到了throws和throw的用法,有时方法没有能力处理异常,需要向上抛出异常,由其他方法来处理异常。
throw 检查异常处理的时候,如果使用throw 那么必须使用throws .
throw 用于方法中, thows用于方法的签名。
总结
如果异常处理太多会影响正常代码的阅读,一般建议专门有个异常处理的方法,来处理异常。而产生异常的方法只需要抛出代码,这样能极大的方便阅读代码,及整洁代码。
更多推荐
所有评论(0)