posts - 3,  comments - 3,  trackbacks - 0
            2006年6月20日
          ??????????我這個人有時比較粗心大意,天生對一些記憶性的東西容易搞錯,比如到底一個判斷方法執行后返回值是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 阿郎 閱讀(216) | 評論 (3)編輯 收藏
            2006年6月14日

          下面一段代碼是通過配置文件讀取類名,取得相應的處理類的方法實例,方法要返回字符串形式的值。

          ? 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 阿郎 閱讀(680) | 評論 (0)編輯 收藏
            2006年6月5日

          ???????? 靜態代碼塊(static block ),不包含在任何方法體中當類被載入時,自動執行靜態代碼塊,且只被執行一次經常用于類屬性的初始化。 這是網上通行的關于靜態代碼塊的定義。
          ???????? 在Java中,類裝載器把一個類裝入Java虛擬機中,要經過三個步驟來完成:裝載、鏈接和初始化,其中鏈接又可以分成校驗、準備和解析三步,除了解析外,其它步驟是嚴格按照順序完成的,各個步驟的主要工作如下:

          • 裝載:查找和導入類或接口的二進制數據;

          • 鏈接:執行下面的校驗、準備和解析步驟,其中解析步驟是可以選擇的;

          • 校驗:檢查導入類或接口的二進制數據的正確性;

          • 準備:給類的靜態變量分配并初始化存儲空間;

          • 解析:將符號引用轉成直接引用;

          • 初始化:激活類的靜態變量的初始化Java代碼和靜態Java代碼塊。

          初始化類中屬性是靜態代碼塊的常用用途,但只能使用一次。

          posted @ 2006-06-05 17:34 阿郎 閱讀(2105) | 評論 (0)編輯 收藏
          僅列出標題  
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          我正在讀

          常用鏈接

          留言簿(1)

          隨筆檔案

          我的其他博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 策勒县| 来宾市| 龙陵县| 抚松县| 托克托县| 固始县| 无为县| 新田县| 三亚市| 克东县| 安国市| 云南省| 仁怀市| 武穴市| 始兴县| 广灵县| 迁西县| 北碚区| 雷山县| 周至县| 南皮县| 江油市| 海门市| 瓮安县| 张家港市| 阿克| 名山县| 勃利县| 恩平市| 河南省| 色达县| 双牌县| 云阳县| 肇源县| 桃江县| 遂溪县| 泸西县| 巴中市| 湖北省| 桓仁| 鹰潭市|