欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

异常机制 的 理解 博客分类: 总结 java异常 

程序员文章站 2024-03-25 18:34:16
...

          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;
	 }
	

 

相关标签: java 异常