簡體   English   中英

不拋出異常?

[英]Exception not throwing?

我的代碼類似於以下內容:

try{
    func1();
}
catch(Exception e){
    /Do something
}


static func1(){
    func2();
}

static func2(){
    //Exception thrown here
    System.IO.StreamReader file = new System.IO.StreamReader(filePath);
}

當func2()中的代碼行引發異常時,catch子句中沒有任何通知。 我沒有明確拋出任何東西,只是有一些靜態的常規函數​​聲明-任何地方都不會出現“ throw”。

為什么異常不向上傳播到catch語句?

不,代碼很好。 您的真實代碼中有一些您沒有顯示給我們。 該異常傳播良好:

using System;

static class Program {
    static void Main() {
        try{
            func1();
        } catch(Exception e) {
            // works fine: FileNotFoundException
            Console.WriteLine(e);
        }
    }
    static void func1(){
        func2();
    }    
    static void func2() {
        string filePath = "doesnot.exist";
        System.IO.StreamReader file = new System.IO.StreamReader(filePath);
    }
}

考生:

  • 任何涉及try東西都值得懷疑-高音檢查一下
  • 任何涉及線程的事物都可能在其他地方有例外

異常將“冒泡”,直到被捕獲或使您的應用崩潰。

最好的選擇是使用調試器。 確保已將其設置為在HANDLED異常上停止(調試/異常/選中“公共語言運行時異常”上的“引發”框)。

現在運行您的代碼。 如果func2引發異常-您的代碼將中斷; 不管是否處理。 您可以單步執行代碼,然后查看如何處理它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM