异常机制 的 理解

          java中的异常 机制

我们用java编写程序时,总会遇到一些 错误,有些错误是我们程序员的错,这是我们可以改正的 ,有些错误却是我们不能控制的。好的,在java中这些叫做异常,并且有一个超类叫做Throwable,而它有两个子类 1Error  2 Exception  Error  类对象(如动态连接错误等),由Java虚拟机生成并抛弃(通常,Java程序不对这类例外进行处理);Exception  有两类,其中类RuntimeException代表运行时由Java虚拟机生成的例外,这是我们经常遇到的,当然就是我们的错误,如算术运算例外ArithmeticException(由除0错等导致)、数组越界例外ArrayIndexOutOfBoundsException等;其它则为非运行时例外,如输入输出例外IOException等。Java编译器要求Java程序必须捕获或声明所有的非运行时例外,但对运行时例外可以不做处理。我们通常用就 是用  trycatchthrowthrowsfinally  来处理。

这几个关键字英文解释是  

Throws: Lists the exceptions a method could throw.

Throw: Transfers control of the method to the exception handler.

Try
Opening exception-handling statement.
try
语句用大括号{}指定了一段代码,该段代码可能会抛弃一个或多个例外
Catch
Captures the exception.
 
捕获 异常      catch语句可以有多个,分别处理不同类的例外

Java运行时系统从上到下分别对每个catch语句处理的例外类型进行检测,直到找到类型相匹配的catch语句为止。这里,类型匹配指catch所处理的例外类型与生成的例外对象的类型完全一致或者是它的父类,因此,catch语句的排列顺序应该是从特殊到一般。
Finally
Runs its code before terminating the program.

在整个程序 结束前 执行里面 的代码

try所限定的代码中,当抛弃一个例外时,其后的代码不会被执行。通过finally语句可以指定一块代码。无论try所指定的程序块中抛弃或不抛弃例外,也无论catch语句的例外类型是否与所抛弃的例外的类型一致,finally所指定的代码都要被执行,它提供了统一的出口。通常在finally语句中可以进行资源的清除工作。如关闭打开的文件等。

 

我尝试着 写了一个 异常的 程序

package netjava.txc.ExceErr;
/**
 * 异常测试
 * @author Administrator
 *
 */
public class ExceptionTest {
	//程序入口
	public static void  main(String args[])throws Exception{
		//创建对象
		 ExceptionTest  et =new  ExceptionTest();
	     boolean b=	 et.OutofBounds();
	     System.out.println(b);
		
	}
	
	
	/**
	 *   异常
	 * @return
	 * @throws Exception
	 */
	public  boolean  OutofBounds()throws Exception{
		boolean  b1=true;
	try{	
		   if(!Ex()){
			   return b1;
		   }
		 
	 	}// 如果上一个方法 不异常  就抛出异常
	     catch(Exception e){
		e.printStackTrace();
		throw e;
	     }
	finally{	
 
	 return  b1;
	}
	}
	/**
	 * 出现异常的函数
	 * @return 异常时 为假   不出现异常时 为真 
	 * @throws Exception
	 */
	
	public  boolean Ex()throws  Exception{
		
		boolean rr = true; 
		
		try{	
			int ge[]=  { 1,1,2,5,5,66,5,85,2,6,2,52,85,2};
			int ge1[]=new  int[10];
			int j=0;
			for(int i=0;i<ge.length;i++){
				
				ge1[j]=ge[i];
				j++;
				
			}
			
			return rr;
			
			//未出现 异常
		}catch(Exception e){
			e.printStackTrace();
			 rr=false;
			 throw e;
		}
	    //最后 执行
		finally{
			
			return rr;
	 }
	

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值