Core Java第十二章知识点总结——异常处理

Core Java第十二章知识点总结——异常处理


知识点预览

异常的概念

异常处理的概念

Java中异常的分类

Java中常见未检查异常

throw关键字

异常的传递

异常处理的方式(throws try…catch)

异常信息

方法覆盖中的异常

自定义异常


异常处理的概念

 

1.  异常的概念

一个软件正常运行时发生的意外情况

2. 异常处理

当发生异常时,采取补救措施,减少用户损失。


Java中的异常与异常分类

 


 Core Java第十二章知识点总结——异常处理_第1张图片

 

 

Exception的子类

 

 Core Java第十二章知识点总结——异常处理_第2张图片

 

1. 非检查异常

RuntimeException的子类,可以避免,不需要必须处理

2.  检查异常

不可避免,必须进行异常处理,要不编译器报错


常见未检查异常


1.ArithmeticException


2.ArrayIndexOutOfBoundsException 数组下标越界异常


3. NullPointerException  空指针异常


4.ClassCastException 类型转换异常

 

检查异常

Class.forName(“com.mysql.jdbc.Driver”);

 

throw关键字

 

1.  throw关键字

       产生异常(抛出异常)

2.  throw异常对象

       thrownew NullPointerException();

       产生异常后以后的代码不会执行

 

异常的传递

沿方法调用链反向传递

main()

       m1()

              m2() throw newNullPointerException();

 

 

package chp12.ex07;

/**
 * 
 * @Author: Wentasy
 * @FullName: TestException.java
 * @Description: 异常的传递:沿方法调用反向传递
 * 打印结果: main 1
		   m1 1 
           m2 1
 * @Create Date: 2012-8-16
 */
public class TestException {
  public static void main(String args[]){
	  System.out.println("main 1");
	  m1();
	  System.out.println("main 2");
  }
  public static void m1(){
	  System.out.println("m1 1 ");
	  m2();
	  System.out.println("m1 2");
  }
  public static void m2(){
	  System.out.println("m2 1");
	  throw new NullPointerException();
	  //System.out.println("m2 2");//Unreachable code
  }
  
}

 

异常处理的方式

1.  异常处理的第一种方式

a)   throws声明处理异常

eg:餐馆退菜(往上推卸责任)

b)  throws后面可以声明多个异常

c) throws 可以应用父类异常代替子类异常


2.异常处理的第二种方式 

a)  try…catch处理异常

try{

       代码1

       代码2

       // FileNotFoundException 所捕获的异常的类型

}catch(FileNotFoundExceptione){

       //异常处理的代码

}

b) 捕获:catch块的顺序

c)catch块的异常:由小往大

d)try…catch…finally异常处理方式

finally中的内容肯定执行

主要用于释放资源

 

 

方法覆盖中的异常


子类的覆盖方法不能比父类的被覆盖方法抛出更多的异常



 拓展:方法覆盖的要求


package chp12.ex17;

import java.io.IOException;

/**
 * 
 * @Author: Wentasy
 * @FullName: TestSuper.java
 * @Description: 子类的覆盖方法不能比父类的被覆盖方法抛出更多的异常
 * @Create Date: 2012-8-16
 */
class Super{
	public void m1() throws Exception{
		
	}
}

/*
class Sub extends Super{
	public void m1() throws Exception{
		
	}
}
class Sub extends Super{
	public void m1(){
		
	}
}

*/

class Sub extends Super{
	@Override
	public void m1() throws IOException{
		
	}
}

public class TestSuper {

}


message属性与异常追踪

 

1. Exception/printStackTrace();

2. Exception类中定义了一个message属性可以用于存储异常消息,还提供了构造方法。

 

自定义异常


1. extends Exception检测异常:当产生时需要异常处理

 

 

package chp12.ex20;

/**
 * 
 * @Author: Wentasy
 * @FullName: TestException.java
 * @Description: 自定义异常 extends Exception
 * @Create Date: 2012-8-16
 */
class MyException extends Exception{
	public MyException(){
		
	}
	public MyException(String message){
		super(message);
	}
}


public class TestException {
  public static void main(String args[]){
	  
  }
  public static void m1() throws MyException{
	  throw new MyException();
  }
  
}

2. extends RuntimeException 不需要强制处理

 

 

package chp12.ex21;

/**
 * 
 * @Author: Wentasy
 * @FullName: TestException.java
 * @Description: 自定义异常:extends RuntimeException
 * @Create Date: 2012-8-16
 */
class MyException extends RuntimeException{
	public MyException(){
		
	}
	public MyException(String message){
		super(message);
	}
}

public class TestException {
   public static void main(String args[]){
	 
   }
   
   public static void m1(){
	   throw new MyException();//可以不用处理 因为是非检查型异常
   }
}

你可能感兴趣的:(java,oracle,exception,String,Class)