zoukankan      html  css  js  c++  java
  • Java异常处理错误

    Java异常处理错误

           研究发现,在编译阶段的最佳时机错误,序之前。然而,编译期间并不能找出全部的错误,余下的问题必须在执行阶段解决。这就须要错误源通过某种方式把适当的信息传给某个接收者,该接收者知道怎样处理这个问题。

           Java中的异常处理的目的在于通过使用少于眼下数量的代码来简化大型,可靠的程序的生成。而且通过这样的方式能够使你更加自信:你的应用中没有未处理的错误。

           异常这个词有我对此感到意外的意思。

    问题出现了,你或许不清楚该怎样处理,但你的确知道不该置之不理。你要停下来,看看是不是有别人是不是在别的地方。可以处理这个问题。仅仅是在当前的环境中还没有足够的信息来解决问题,所以把问题提交到更高级别的环境中。在这里将作出正确地决定。

            使用异常所带来的还有一个相当明显的优点是:它往往可以减少错误处理代码的复杂度。假设不使用异常,那么就必须检查特定的错误。并在程序的很多地方去处理它。

    而假设使用异常,就不必在方法调用处进行检查,由于异常机制将能保证捕获这个错误。并且,仅仅需在一个地方处理错误。即所谓的异常处理程序中。

    这样的方式不仅节省代码,并且把“描写叙述在正常运行过程中做什么事”的代码和“出了问题怎么办”的代码相分离。

    异常处理的过程:

           当抛出异常之后,有几件事情会随之发生。首先,同Java中其它对象的创建一样。将使用new在堆上创建异常对象。然后,当前的执行路径被终止,而且从当前环境中弹出对异常对象的引用。

    此时。异常处理机制接管程序,并開始寻找一个恰当的地方来继续执行程序。这个恰当的地方就是异常处理程序,它的任务是将程序从错误状态中恢复,以使程序能要么换一种方式执行,要么继续执行下去。

    import java.util.*;
    
    public class WhoCalled{
    	static void f(){
    		try{
    			throw new Exception();
    		}catch(Exception e){
    			for(StackTraceElement s:e.getStackTrace())
    				System.out.println(s.getMethodName());
    		}
    	}
    	static void g(){
    		f();
    	}
    	static void h(){
    		g();
    	}
    	public static void main(String[] args){
    		f();
    		System.out.println("--------------------------------------");
    		g();
    		System.out.println("--------------------------------------");
    		h();
    	}
    }
    

    finally子句:

    不管异常是否抛出,finally子句总能被运行。

    import java.util.*;
    
    class ThreeException extends Exception{}
    
    public class FinallyWorks{
    	static int count=0;
    	public static void main(String[] args){
    		while(true){
    			try{
    				if(count++==0)
    					throw new ThreeException();
    				System.out.println("No exception");
    			}catch(ThreeException e){
    				System.out.println("ThreeException");
    			}finally{
    				System.out.println("In finally clause");
    				if(count==2)
    					break;
    			}
    		}
    	}
    }
    


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    CSRF攻击与防御
    別惹我
    单系统登录机制SSO
    jdk8- list操作
    mybatis--Mapper 常见报错总结(持续总结)
    死锁排查的小窍门 --使用jdk自带管理工具jstack
    oracle笔记--查询10条之后记录的数据
    zookeeper集群操作【这里只说明简单的操作步骤,zk的相关参数、说明请参考官方文档】
    利用jquery操作隐藏table某一列
    关于python3.X 报"import urllib.request ImportError: No module named request"错误,解决办法
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4675857.html
Copyright © 2011-2022 走看看