`
java-mans
  • 浏览: 11411420 次
文章分类
社区版块
存档分类
最新评论

Oracle培训(十二)——Core Java第十二章知识点总结——异常处理

 
阅读更多

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


知识点预览

异常的概念

异常处理的概念

Java中异常的分类

Java中常见未检查异常

throw关键字

异常的传递

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

异常信息

方法覆盖中的异常

自定义异常


异常处理的概念

1. 异常的概念

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

2. 异常处理

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


Java中的异常与异常分类


Exception的子类

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();//可以不用处理 因为是非检查型异常
   }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics