我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > Java技术星空(中国) > Java异常机制的4点建议
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

Java异常机制的4点建议

43浏览 / 0回复

sheng1989820

sheng1989820

0
精华
4
帖子

等  级:Lv.1
经  验:17
  • Z金豆: 0

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:安徽
  • 注  册:2012-06-25
  • 登  录:0000-00-00
发表于 2013-06-05 15:59:26
电梯直达 确定
楼主

1.不要滥用异常

只在必要情况下使用异常机制,异常处理不能代替简单的数据校验,因为异常机制会降低程序的性能。

 以常见的堆毡处理为例,java.util.stack 类的pop方法的安全调用:

出栈之前检查栈堆是否为空  if(!S.empty0)s.pop0

使用异常保护,强行出栈   try{s.pop0;}catch(empty StackExcception e)

 

  推荐使用第一种方法,因为与数据校验相比,捕获异常所花费的时间大大超过了前者,因此不需要使用异常处理的代码就不要用。

 

2.不要过分地细化异常

   如果将每一条语句分装在一个独立的try语句块中,的确可以最大限度的保证程序的安全执行,但这将导致代码量的急剧膨胀,同时还会影响程序的运行逻辑。

     看一段代码示例:从栈中弹出100个数值,然后将他们存入一个文件中

  For(inti=0;100++i){

      try{

         n=s.pop();

    }catch(EmptystackException){}

      try{

          Out.writelnt(n);

 

   }catch(IOE xception e){}

 }

 

在上例中,如果栈是空的,则文件写入值不正确;如果写文件出现错误,程序也会继承执行,问题也很难给与排除。

通常将具有事务性的整个任务包装在一个try语句块中,这样当任何一个操作出现问题时,整个任务都可以被取消,避免因为异常机制带来的逻辑异常。

 

3.合理利用异常层次结构

 

     不要直接抛出exception 异常,应该寻找更加适当的子类或创建自己的异常类,尽量清楚的描述问题将有利于解决问题

      不要直接使用catch捕获Throwableexception 异常,偷懒会使程序代码难以调试和维护,除非你真的想忽略try中的所有异常。

     将一种异常转换成一种更加适合的异常时不要犹豫。例如:在解析某个文件中的一个整数时,捕获NumberFormatException 异常,然后使用newIOException(nef)将它转换成IOException更加合适。

 

4.敢于传递异常

捕获异常是为例让业务完整的执行,如果发生的异常能够在方法内部处理而且不会影响调用者,那么就捕获它。如果异常将导致业务不能完整执行,那么就抛出异常,让高层次的方法通告用户发生了错误,放弃当前操作或进行重试。

例如readTextfile 示例中,此方法是为例向调用者返回文件的内容,但是如果方法中发生了OException那么方法将无法返回结果值,那么将异常抛出给调用者是最好的选择。这种思想也符合程序设计的低耦合概念,每一个方法都做好自己的事,能力之外的事让调用者去处理。
高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表