繁体   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