您的位置:首页 > 编程语言 > Java开发

Java异常基础一

2009-09-11 19:46 246 查看
  编程时,碰到一种不希望看到,也无法给返回值,一般输出一句话:打印错误或return,这样,程序是不健壮的。那如何让程序更加健壮?碰到不希望看到的该如何办?

  程序运行过程:main()调用A方法,A方法再调用B方法......,就像公司中CEO要布置任务给部门总监,总监再把任务给经理,经理再分给基层职员,CEO不会自己去做,一层一层分下去,再一层一层返回来;结构化设计的思想就是尽量将程序分下去,最基层的方法执行后逐层往上返回,程序执行的过程就是方法调用的过程。如果在方法调用过程中,一旦出现一些异常情况,如职员给经理准备财务报表的过程中突然发现报表丢失,遇到这种突发异常,首先看在所管辖或职权范围内能否找到数据,如果找不到数据一般会向上报告给经理,经理怎么办?他会在他所管辖的范围内找一次,他有可能找到,如在他的电脑中有报表,就把这个异常处理了;如果经理也不知道,他会再往上报给总监,总监也一样先找一次,如果找到解决办法就解决了,如果解决不了在程序中会再往上报,报给CEO,但在实际工作中是不可能往上报了(?因为报上去后CEO知情,有可能就在它的文件柜里有,可能不大,CEO也不知情,CEO怎么办?告诉上帝,上帝说:”连报表都没有,唉,算了,你们不要做公司“,OK,公司倒闭),上帝就是Java虚拟机,虚拟机就会终止你程序的运行。

  那么在这个过程中,哪个级别去处理最好?有什么样的原则?思考:1、谁知情谁处理!2、谁负责谁处理!公司规定财务报表由经理保管,他就负责;3、谁导致谁处理!公司总监要2009第2季度的报表,经理就把任务分配给3个职员,A职员负责4月份,B职员负责5月份,C职员负责8月份,但现在是8月份还没结束,所以不能出报表,没办法,告诉经理,这时候就得经理处理,因为经理将错误的参数(8月份)传给职员,所以经理处理。

  以上共2个问题:1、何时抛出异常?2、何时处理异常?

  异常处理实际上在做应急预案,如果出现某些异常情况应该怎么去处理,要预先处理好。

  异常分类:

  Exception (异常)
一般是可以恢复的,程序员可以自己定义的,或者其它业务上的问题;

  Error(错误)
,严重的,错误的,不可恢复的系统级的问题,如,在程序执行过程中发现是个无限递归,会导致空间溢出,只能终止。注意这个Error和开发过程中遇到的问题是不一样,开发中遇到的问题是编译时问题(错误或警告),编译时问题一般都是语法问题。我们现在讲的是运行时异常或错误。

  我们计划的异常处理都是指Exception的处理。

  Exception异常又分为:RuntimeException(运行时异常,也叫未检查异常或不受检查异常)和已检查异常(或受检查异常):

    已检查异常
是指程序员已经足够小心的检查了他的代码,但是还是不能保证代码不出现异常;如,程序要访问某个文件,但访问时文件不存在,这和程序本身没有太大关系;再如,程序要进行网络连接,但执行时没有连接网线,这些问题都是已检查异常。

    未检查异常
一般是由程序员没有细心检查代码,而导致的如空指针异常、数组越界、类型转换异常等都是由于程序员粗心大意造成的。这些异常是在编码过程中是能够避免的。

  看到此你需要思考:我们需要处理的到底是已检查异常还是未检查异常?如一幢大楼运行过程中被雷击中,这肯定是已检查异常,但运行过程中发现有个地方四周没有窗户和门,这就是未检查异常,那到底我们需要针对哪个异常进行应急预案呢?当验收大楼时肯定政府部门要检查你的抗震级别,消防措施等,这些措施是你在修建时必须考虑,而且要求是强制执行的,那么这个要求就是必须处理的,如果不处理则编译通不过。如果出现未检查异常,那就只能加门或窗户,即修改代码了。

  从另外一个角度来讲,已检查异常(受检查异常)就是受编译器检查的异常。

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息