隨筆 - 20  文章 - 57  trackbacks - 0
          <2010年11月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          51CTO

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          經(jīng)過一個多月的Java學習,我們慢慢深入了解了Java中的一些比較高級的方法!但這些方法在你調試的時候一定要慎重!!不要等待失去了整個硬盤,才后悔莫及!!! 如果你在編程的時候多長個心眼,這些小的錯誤是可以避免的!!!


          下面我們來看一下一個讓人很崩潰的錯誤,這個錯誤讓我感到不可思議!!代碼如下:

          import java.io.File;

          public class KillBackServer {
           
           public static void main(String[] args){
            File f = new File("C:\\");
            fun(f);
           }
           
          //定義一個靜態(tài)函數(shù),用來實現(xiàn)對一盤文件的遍歷
           public static void fun(File f)
              {
             if(f.isDirectory())
              {
                File file[] = f.listFiles();
                try
                {
                  for(int i = 0 ; i <file.length ; i++)
                  {
                       fun(file[i]);
                  }
                }
                       catch(Exception e){}
              }
             else
             {
                  if("我是病毒.exe".equals(f.getName()))                                           
                         System.out.println(f);
                         //僅僅當程序找到"我是病毒.exe"的 時候才執(zhí)行這一句代碼                            
                         //f.delete();                                                   
                         System.out.println("該病毒已被查殺");}  
                         System.out.println(f.getPath() + "***********************");                    
              }
           
           }

          }
           

          大家一定要注意紅色字體的代碼!!!我之所以注釋了,就是怕直接復制我的代碼,然后運行…… 
          如果這樣后果你是知道的……


           本來這段代碼是用來掃描C盤,找到"我是病毒.exe"文件,并把它刪除,判斷一個文件名,用的是equals這是對的!!!
          錯就錯在:if()判斷,大家都明白了吧!
          希望大家以后不要因為犯了這個低級錯誤,而把自己的硬盤給了格了= = |||

          其實,有很多方法可以避免這種錯誤!!!比如,你可以在f.delete(); 后面加上一句打印語句,這樣的話,在你測試的時候就會發(fā)現(xiàn),原來if語句后面少一個大括號…… 


          這個錯誤寫出來僅僅為了提醒大家規(guī)范的重要性!!!




           


          posted on 2010-11-17 21:29 tovep 閱讀(2684) 評論(16)  編輯  收藏

          FeedBack:
          # re: Java_一失足成千古恨 2010-11-17 21:55 來了
          無語  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-17 23:21 blackbat
          編碼格式規(guī)范就可以避免這個問題啊
          if(){
          ...
          }
          加上括弧就知道  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-18 00:37 Tovep
          @來了
          是啊!這個錯誤真的很讓人無語……  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-18 00:39 Tovep
          @blackbat
          正如我們老師說的:規(guī)范比能力還要重要,現(xiàn)在終于明白了……  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-18 08:17 xhiyu
          進到第PE系統(tǒng),恢復刪除的數(shù)據(jù)。之前的數(shù)據(jù)一般都可以找回來。  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-18 09:27 Tovep
          @xhiyu
          在PE中可以用easyrecoveryprofessional嗎?  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-18 10:04 xiaoxin5230
          不管什么時候都要加空格,java編程規(guī)范里面有的  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-18 16:55 Tovep
          @xiaoxin5230
          在Java中加入空格的作用是讓程序更有層次!!!
          如果程序的層次感很好的話,如果代碼有錯誤,找錯誤也比較容易的……、
          總之,好處很多的
            回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-18 17:40 isaac
          這是一個弱智的錯誤。
          根本原因有二
          1.不遵守使用{}的規(guī)范。
          2.代碼格式化不好。  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-18 17:57 Lu Han
          怎么會犯這樣的錯誤?
          你的弱碼告訴了我,沒有什么不可能!  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-19 10:11 Tovep
          @isaac
          不遵守{}規(guī)范,這個我知道!!
          代碼格式化不好——是什么意思啊?
          是不是一般不要寫一些格式化的代碼!!!  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-19 10:14 Tovep
          @Lu Han
          我同學讓我看看他的代碼,怎么回事?怎么一運行電腦就沒系統(tǒng)了!我才發(fā)現(xiàn)這個低級錯誤!!!不過我覺得好多事都敗在細節(jié)上!!所以寫出來提醒大家一下!!  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-19 23:25 大山
          用eclipse,自動格式化代碼就能解決這個問題  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-20 18:12 Tovep
          @大山
          其實,我覺得在編代碼的時候遵守一定規(guī)則要比自動格式化代碼好!!!
          Eclipse 的自動格式化太形式話!!!  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-25 19:25 WJJ
          說實話,一開始我看這程序還真沒看出有啥問題, 不過一說{} 我發(fā)現(xiàn),確實 是少一對 哈哈, 太崩潰了。  回復  更多評論
            
          # re: Java_一失足成千古恨 2010-11-30 15:45 rrr
          catch(Exception e){}
          這才是最要命的,要么throw出去,要么輸出異常信息

          刪除磁盤這種比較重量級的操作最好是先模擬一遍,確認無誤再真正執(zhí)行動作


            回復  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主頁 主站蜘蛛池模板: 江川县| 黎川县| 栖霞市| 无为县| 舞阳县| 台江县| 屏东县| 陈巴尔虎旗| 四川省| 石门县| 高密市| 平邑县| 辽阳县| 油尖旺区| 隆子县| 宜都市| 江源县| 浪卡子县| 石城县| 绥德县| 惠安县| 玛曲县| 松溪县| 沁源县| 定日县| 呼玛县| 靖州| 顺昌县| 大邑县| 卓尼县| 灌云县| 常德市| 定西市| 循化| 勃利县| 汝城县| 武宣县| 兰考县| 红原县| 苍梧县| 上犹县|