none
關於 發生例外狀況訊息 RRS feed

  • 問題

  • 請問 各位前輩們

    如果我發生了

    DirectoryNotFoundException

    這個例外訊息 並且是在

    這個循環下

      For Each MySearchFile In My.Computer.FileSystem.GetFiles("G:\DonotBackup", FileIO.SearchOption.SearchAllSubDirectories, "*.*")
    
            File.AppendAllText("g:\FileAll.txt", MySearchFile & vbCrLf)
    
          Next
    

    請問有沒有辦法 讓他繼續往下 繼續呢?

     

    2011年3月26日 上午 05:23

解答

  • 微軟線上手冊就有中文範例:

    http://msdn.microsoft.com/zh-tw/library/3k3z0k7a.aspx

     

    不會,最多避免不需要的搜尋。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 白楓林 2011年4月1日 下午 01:29
    2011年4月1日 下午 12:34

所有回覆

  • 你確定有這個資料夾嗎?

    G:\DonotBackup

    2011年3月26日 上午 05:52
  • Try ... Catch
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年3月26日 上午 09:44
  • 有...但是那個資料夾下 因為我之前 下載一個防 USB 病毒的軟體

    然後他 「注入」防護 結果就變成了

    那個目錄下 會在做一個目錄...變成第二層 的目錄想要點進去

    連 檔案總管都會出錯 (但是 卻明明有那個目錄)

    2011年3月26日 下午 04:49
  • 那有可能是應用程式讀取該資料夾的動作被防毒軟體攔掉了
    2011年3月26日 下午 11:33
  • 上面那個問題 我用 Unlock 強制珊除了

    但是 用 try catch 方式

    我找之前 我有發問的 問題

    有一題也是 需要用到 Try catch 

    那個 解決方式 是 因為 直接在那行 作 Try catch

     

    而這次是 在 For Each 上面

    現在換成另一個問題

     

    就是 system volume information 這個目錄 不能存取

    網路上搜尋 這個目錄 主要是 系統還原 的目錄

    也是 同樣卡在 for 那邊就出現錯誤了

     

    另外 我改寫成 Thread 方式 發現 CPU 吃更兇?

    是方式不對嗎?

     

     

     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      Dim FileList1 As FindList
      FileList1 = New FindList()
      threada = New Thread(AddressOf FileList1.GetList)
    
      If File.Exists("g:\FileAll.txt") Then
       File.Delete("g:\FileAll.txt")
      End If
      threada.Start()
    
     End Sub
    
     Class FindList
      Public Sub GetList()
        Dim MySearchFile As String
         Try
    
        'DonotBackup
    
    
        For Each MySearchFile In My.Computer.FileSystem.GetFiles("G:\", FileIO.SearchOption.SearchAllSubDirectories, "*.*")
    
         File.AppendAllText("g:\FileAll.txt", MySearchFile & vbCrLf)
    
        Next
       Catch ex As DirectoryNotFoundException
    
        MsgBox(ex.Message)
       Catch ex1 As UnauthorizedAccessException
        MsgBox(ex1.Message)
       End Try
    
    
       Form1.Label1.Text = "OK"
      End Sub
    
     End Class
    

     


    2011年3月27日 上午 02:46
  • 用逐步執行測看看。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年3月27日 上午 03:18
  • 我有直接 在跑得時候 設定 中斷點 在

    File.AppendAllText("g:\FileAll.txt", MySearchFile & vbCrLf)

    這行 但是 連中斷都沒有 就直接 在 for each 那行 出錯 我是等到他跑了約 10 秒 然後設定中斷在那行 (我那個磁碟 超過 10000 個目錄) 反而沒中斷卻 直接出錯(我設好中斷之後 在跑個兩三秒才出錯)
    2011年3月27日 上午 04:39
  • 中斷點設在:

    For Each MySearchFile In My.Computer.FileSystem.GetFiles("G:\", FileIO.SearchOption.SearchAllSubDirectories, "*.*")

    改用 F11 逐步執行。

     


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年3月27日 上午 05:26
  • 在 Thread 的裡面

    以你的步驟下去 測試

    在 For Each 中斷 然後 F11 執行

    結果 直接跳出去 畫面(一般的執行畫面)

    沒有 進去 迴圈內...

    且 CPU 是滿的情況.. 這是怎回事?

    2011年3月27日 上午 05:54
  •  跳出畫面是啥意思?

    跳出迴圈、跳出副程式、還是跳到你呼叫端的 Try Catch ?


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年3月27日 下午 12:04
  • 不好意思 我解釋的不夠清楚

    在 For Each 上面設定 中斷點

    正常情況下都會在 迴圈內繼續跑 直到 值滿

    但是我按下 F11 之後 連迴圈都不跑

    直接 有如 在那行直接 設定

    if a = 1 then

    End Sub

    end if

    這種情況

    我是 參考 這個網址

    http://www.asp.com.tw/news/knowledge/1/info_tc1.htm

    的關鍵字 Threading Model 下面 範例

    2011年3月27日 下午 11:21
  • 多緒時是否在執行其他執行緒?

    請先確認單續執行無誤再改為多緒。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年3月28日 下午 02:53
  • 如果以一般的寫法 會因為 搜尋太多目錄 而導致 程式無回應狀態

    所以我才會想 是否 用多緒能減少 無回應狀態的時間..

     

    而如果 直接選定一個目錄 而不是 根目錄,那搜尋會加快很多

     

    覺得 好像因為這行問題 才導致 速度被拖下來

    My.Computer.FileSystem.GetFiles("G:\", FileIO.SearchOption.SearchAllSubDirectories, "*.*")

    2011年3月29日 下午 01:47
  • 如果是全硬碟搜尋,本來就會慢,弄個隨身碟用隨身碟測看看。

     


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年3月29日 下午 02:34
  •  

    我測試之後  我隨身碟容量是 8G

    圖片如下

     

    結果 速度還是一樣很慢 (當然沒有像一般硬碟那麼慢) 這是因為 .net 本身的慢嗎?要怎樣才能像 一般市面軟體 很快建立一個搜尋檔?


    我測試程式 跑得時間秒數 是 85 秒...
    2011年3月30日 上午 08:14
  • 檔案搜尋應該慢是慢在目錄結構複雜。

    你的 8G 大概檔案有多少?目錄層數有幾層?

    我自己做這類東西都只掃第一層子目錄,有需要再掃下一層,不多掃,避免速度慢。

    追求速度的話,你可以考慮用 API 處理,因為 .Net 會建一堆物件集合,你只掃檔名他還是等於把檔案一般屬性都拉出來了,多做了無用功本來就會慢。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年3月30日 下午 03:11
  • 隨身碟的 目錄 頂多不會超過兩層..因為容量小.

     

    那如果是  API 那我應該 找哪方面的呢?

    如果你說只掃一層目錄 那我如果先把 第一層 列進去 陣列

    然後在從陣列 掃每一個目錄內的子目錄 會比較快嗎?

    2011年4月1日 上午 11:12
  • 微軟線上手冊就有中文範例:

    http://msdn.microsoft.com/zh-tw/library/3k3z0k7a.aspx

     

    不會,最多避免不需要的搜尋。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 白楓林 2011年4月1日 下午 01:29
    2011年4月1日 下午 12:34