posts - 3,  comments - 3,  trackbacks - 0
  2006年6月5日
          我这个人有时比较粗心大意,天生对一些记忆性的东西容易搞错,比如到底一个判断方法执行后返回值是true还是false,一个if判断条件应该为真时执行{}内语句还是假时有时候经常搞不清楚。
         今天作的程序中有一个需要判断一个变量是否为空,如果不为空并执行一个特定语句的程序,我就马马虎虎写成了如果为空则执行这个语句。郁闷!!老是犯这类错误!

         今天的程序中有检查出一个错误,本来应该这样执行的程序:如果一次不成功则执行第二次,第二次不成功则执行第三次,如果第三次不成功则执行一个特定操作。修改后代码如下:
 if (contents == null || contents == ""{
                    Thread.sleep(
100);
                    contents 
= this.getContent(a, b);
                }
 
                
if (contents == null || contents == ""{
                    Thread.sleep(
200);
                    contents 
= this.getContent(a, b);
                }
 
                
if (contents == null || contents == ""{
                    contents 
= "出错提示和帮助免责信息";
                }
原来错误代码:
 if (contents == null || contents == ""{
                    Thread.sleep(
100);
                    contents 
= this.getContent(a, b);
                }
else if (contents == null || contents == ""{
                    Thread.sleep(
200);
                    contents 
= this.getContent(a, b);
                }
else if (contents == null || contents == ""{
                    contents 
= "出错提示和帮助免责信息";
                }

错误的方法使得程序没有达到一次达不到目的重试两次的目的简直返晕,竟然犯这种处级以下错误。
posted @ 2006-06-20 15:43 阿郎 阅读(206) | 评论 (3)编辑 收藏

下面一段代码是通过配置文件读取类名,取得相应的处理类的方法实例,方法要返回字符串形式的值。

  private  String A(Data data)  {

    String processClassName 
=   null // 要通过配置文件读取的类名

    
// 读取配置文件
     try   {
      appconfig c 
=  appconfig.getInstance( " appConfig " );
      c.setConfigFile(
new  File( " ./config/appConfig.txt " ));
      processClassName 
=  c.get( " aaa. "   +  data.To  +
                               
" .class " );
    }

    
catch  (NullPointerException ef)  {
      ef.printStackTrace();
      
return   null ;
    }

    
catch  (IllegalStateException ex)  {
      ex.printStackTrace();
      
return   " 帮助信息 " ;
    }

    
catch  (Exception ef)  {
      ef.printStackTrace();
      
return   null ;
    }

    
// 判断服务类是否已经配置
     if  (processClassName  ==   null {
      System.out.println(
" 尚未配置 "   +  MMSTo  +   " 的服务类 " );
       return   null ;
    }

    
// 取得相应处理执行类
    AIFC aifc  =   null ;
    
try   {
      Class BClass 
=  Class.forName(processClassName);
      aifc 
=  (AIFC ) BClass.newInstance();
    }

    
catch  (ClassNotFoundException e)  {
      e.printStackTrace();
      
return   null ;
    }

    
catch  (InstantiationException e)  {
      e.printStackTrace();
      
return   null ;
    }

    
catch  (IllegalAccessException e)  {
      e.printStackTrace();
      
return   null ;
    }


    String content 
=   "" ;
    
try   {
      content 
=  aifc .getContent(mmsdata.sd,                         mmsdata.To);
    }

    
catch  (Exception ef)  {
      ef.printStackTrace();
      
return   null ;
    }


    
return  content;
  }

方法中读取配置文件时情况比较复杂,有多种可能出现的异常,如果不能很好的抛出和捕捉异常会导致程序的非正常退出或中断,如果此方法为扫描方法,那么将无法进行下面的操作。但各种异常产生的原因不同,有需要区分不同情况以对程序进行控制。但是调用此方法的对象只能通过返回值一种途径对不同情况进行判断。所以在捕捉不同异常同时又需要进行返回不同结果的设计。这也是一种捕获异常而不中断程序的一种方法。
posted @ 2006-06-14 22:19 阿郎 阅读(657) | 评论 (0)编辑 收藏

         静态代码块(static block ),不包含在任何方法体中当类被载入时,自动执行静态代码块,且只被执行一次经常用于类属性的初始化。 这是网上通行的关于静态代码块的定义。
         在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:

  • 装载:查找和导入类或接口的二进制数据;

  • 链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;

  • 校验:检查导入类或接口的二进制数据的正确性;

  • 准备:给类的静态变量分配并初始化存储空间;

  • 解析:将符号引用转成直接引用;

  • 初始化:激活类的静态变量的初始化Java代码和静态Java代码块。

初始化类中属性是静态代码块的常用用途,但只能使用一次。

posted @ 2006-06-05 17:34 阿郎 阅读(2098) | 评论 (0)编辑 收藏
<2006年6月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

我正在读

常用链接

留言簿(1)

随笔档案

我的其他博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜