设计迷踪:给JAVA设计开发新手的一些建议和意见(二)

【处理好你的异常】
-----------------
 异常处理是Java编程中非常重要的一个部分.建议在使用异常之前阅读<Effective Java Programming Language Guide>或者<Practical Java>.
 下面从书中摘出几条建议:
  *绝对不要忽略异常
  *千万不要隐藏异常***
  *仅在不正常的情况下使用异常
  *对可恢复的情况使用可检查异常,对程序错误使用运行时异常(RunTimeException)
  *给方法引发的异常做文档
  *在详细信息里面包括失败捕获信息
  *使用finally避免资源泄漏
  *....
 在这里特别提出的是,在开发中要特别处理NULL的情况,否则经常引发NullPointException异常,在Java里这是一个最令人头疼的异常了.
 如果你的程序因为一个NULL值,而报了几十个NullPointException的话,不但得让人烦死,而且还非常难以找到错误所在.所以在Java中一定要注意这个问题.
 如果你的函数不允许Null值,那么可以截获它,抛出一个异常,或者给客户更友好的提示,难道不好吗?
 让我们来看一个例子:
  public String getName(User aUser)
 {
  //如果aUser为Null,会发生什么情况
  return aUser.getName();
 }
 很明显,如果参数为Null,就会抛出异常.应该改为:
 public String getName(User aUser)
 {
  if(null=aUser)
  {
   return "";
  }
  else
  {
   return aUser.getName();
  }
 }
 或者你要求参数不能为空,还可以抛出一个异常,强制使用者不能传入空值.
 还有经常被忽略的是RunTimeException和普通异常的区别,在Java中,这是一个特殊的异常类,程序中如果遇到这个异常,用户可以不截获它,而如果是其他的普通异常,就不许要截获它.我们的代码经常这么写:
 try
 {
  //your code here
 }
 catch(Exception e)
 {
  //do warn
 }
 这样写的话,就截获了所有异常,当然也包括了RunTimeException. 在很多情况下,这是不合适的处理方式,我们只应截获必要的异常,而应该忽略RuntimeException.

时间: 2024-10-25 23:57:32

设计迷踪:给JAVA设计开发新手的一些建议和意见(二)的相关文章

设计迷踪:给JAVA设计开发新手的一些建议和意见(四)

[MVC,MVC2,WEB设计编程的分层]  请阅读文章 http://forum.javaeye.com/viewtopic.php?t=11712&postdays=0&postorder=asc&start=0[可扩展不等于功能强大,不要夸大其辞] 现在的系统,因为接口或者其他方法的使用,都具有很大的扩展性.但是扩展性不等于功能强大. 存在一个接口,用户可以实现自己的接口,确实非常方便.但是如果你的系统本身只实现了一个接口或者根本没有实现,那么对用户来说就谈不上方便. 例如W

设计迷踪:给JAVA设计开发新手的一些建议和意见(一)

[概述]-------    在工作中,作为一个程序员或者一个设计师,总是要设计一些函数库或者一个框架,当然最经常的还是做项目,即使是一个项目,也会被经常改动,甚至交给别人改动.当你做这些工作的时候,你的这些成果都是要给别人了解使用的,或者说给以后的你使用的,为了别人的方便或者为了自己的方便,我们要尽可能做好设计.[放正心态,任何东西都是不断发展的]---------------------------------- 技术是日新月异的,每一天都有新的技术出来,正所谓"山外有山,人外有人"

设计迷踪:给JAVA设计开发新手的一些建议和意见(三)

[空接口的使用] 在接口使用的时候,空接口有2种情况: 1.类似Cloneable,Serializable,他们往往是做一个标记,表示需要某个功能.当然你也可以这么用,来表示你的类具有某个功能,实现了你的某个接口. 2.你的接口继承了别的接口(非空),你的接口本身没有声明函数.这种情况一般是你不希望用户使用父接口来作为参数类型,因为他们的用途可能不同,此时就可以用空接口来实现. 第一种情况我们不再多说,搜索一下关于Cloneable,Serializable的文章就会了解很多. 我们来看下面的

java web-Java Web开发新手请教个问题(eclipse第三方jar的正确导入方式)

问题描述 Java Web开发新手请教个问题(eclipse第三方jar的正确导入方式) 比如我导入第三方jar包, 我在JSP页面用了这个包,eclipse编译倒是通过.但浏览器弹出来就显示XXX cannot be resolved to a type. 我是这样导入的:右击项目,Build Path-->Libraries-->Add External JARS,还有我把该jar包也放在项目中的WEB-INF的Lib文件下了,还是没用. 凡是用到第三方包,eclipse编译都通过,浏览器

约瑟夫java设计大作业

问题描述 约瑟夫java设计大作业 这是17世纪的法国数学家加斯帕在<数目的游戏问题>中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人 就将他扔入大海,如此循环进行到仅余15个人为止.问怎样排 法,才能 的使每次投入大海的都是非教徒 的设计思想,java设计大作业 解决方案 //a代表教徒,b代表非教徒 public class Test { /** * Enter

java可以开发手机程序吗?

问题描述 java可以开发手机程序吗? 解决方案 解决方案二:J2ME啊解决方案三:回答是肯定的j2me就是为移动设备定制的现在的android更是把java变个脸跟linux混一起成了手机操作系统这种做法让手机程序开发更加简单就中国移动的ophone也是android.解决方案四:引用1楼fox000002的回复: J2ME啊 .解决方案五:可以,但mtk的好像不行.解决方案六:java手机游戏漫天飞~~~解决方案七:当然可以啊.解决方案八:大部分手机游戏都是用Java语言开发的解决方案九:建

用Java设计COM服务器

本节将介绍ActiveX控件.Automation服务器或者其他任何符合COM规范的服务器的开发过程.下面这个例子实现了一个简单的Automation服务器,它能执行整数加法.我们用setAddend()方法设置addend的值.每次调用sum()方法的时候,addend就会添加到当前result里.我们用getResult()获得result值,并用clear()重新设置值.用于实现这一行为的Java类是非常简单的:   public class Adder { private int add

代码-java设计一个管理系统

问题描述 java设计一个管理系统 基于java设计一个学生成绩管理系统,要求有界面,且有增加,查询,修改,删除,退出功能,代码怎么写? 解决方案 这个在网上搜索一下就可以吧. 解决方案二: 界面的代码用easyUI可以自动生成,数据用SQL 解决方案三: 找个jservlet的资料看看你就知道怎么弄了

Java设计一个教学管理系统,要求如下

问题描述 Java设计一个教学管理系统,要求如下 设计一个教学管理系统,考虑到教师.学生.班级.课程.成绩等变量;设计实现类和类的关系,如下: 1.教师和学生都能登入系统,有不同的功能,登录密码为空(提示用继承和多态实现) 2.教师可以录入指定班级指定课程的学生成绩,以字符串输入 3.学生可以登录进去查询某门课程的成绩(自己的或全班的都可以查)和自己的排名 注意:每一个类中要使用无参的构造方法;并且实现数据域的封装 解决方案 教学管理信息系统的设计 解决方案二: http://down.51ct