一、异常的概念与原理

1.什么是异常

2.Java中处理异常的手段

         try:监控有可能产生异常的语句块;

         catch:以合理的方式捕获并处理异常;

         finally:不管有无异常,都一定会执行的语句块(一般用来释放资源等);

         throw:手动抛出异常;

         throws:指定由方法引发的异常。

finally的使用

package exception;

public class Finally {
	public static int method(){
		try{
			int a = 100;
			int b = 1;
			int c = a / b;
			return c;
		}catch(Exception e){
			System.out.println("发生异常啦。。。。");
		}finally{
			return 999;
		}
		
	}
	public static void main(String[] args) {
		int result = method();
		System.out.println("结果是:" + result);
	}

}


运行结果:

java 异常捕获执行sql异常 java异常捕获机制_代码段

3.错误(Error)

          Java程序编译和运行时所发生的问题有两大类:

(1)错误(Error):JVM系统内部错误或资源耗尽等严重情况--属于JVM需要负担的责任,如JVM的内存不足,则会导致JVM报错。

        (2)异常(Exception):其他因编程错误或偶然的外在因素导致的一般性问题。

注意:程序员通常只能处理异常(Exception),而对错误(Error)无能为力。

4.异常处理机制的原理

        Java程序在执行的过程中如果出现异常,会自动生成一个异常类对象,该异常对象将被自动提交给JVM(在程序没有显示处理的情况下),这个过程称为抛出(throw)异常。

二、异常的分类

java 异常捕获执行sql异常 java异常捕获机制_代码段_02

Execption与RuntimeException的区别:

    Exception在程序中是必须要进行处理;

    RuntimeException可以不使用try...catch进行处理,但是如果有异常产生,则异常将由JVM进行处理。

三、处理异常的方法

      使用try-catch块捕获异常,catch块可以有多个

public void method(){
       try{
            //代码块(此处可能产生异常)
       }catch(异常类型 ex){
             //对异常进行处理的代码段
       }
        //代码段
}

     

try-catch-finally

在try-catch块后加入finally块

finally块无论是否发生异常都执行

不执行的唯一情况:遇到System.exit(0)语句时不执行 

   多重catck块

         引发多种类型的异常:

         排列catch块语句的顺序:先子类后父类

         发生异常时按顺序逐个匹配,并且只执行第一个与异常类型匹配的catch语句

public void method(){
      try{
           //代码段
           //产生异常(异常类型2)
      }catch(异常类型1 ex){
           //对异常进行处理的代码段
      }catch(异常类型2 ex){
           //对异常进行处理的代码段
      }catch(异常类型3 ex){
           //对异常进行处理的代码段
      }
      //代码段
}


       

try...finally


public void method(){
      try{
           //代码段1
           //产生异常的代码段2
      }finally{
           //代码段3
      }
}


        throw与throws的区别

1.throw用来手动抛出异常对象。

2.throws用于方法声明处,用于抛出该方法体内部可能发生的异常类型,一旦在方法声明处通过throws抛出某种类型的异常,则在该方法体内部就不用处理该类型的异常,交给方法调用处处理该类型的异常。