C# 异常抛出行为

C# 异常抛出行为,c#,exception,exception-handling,C#,Exception,Exception Handling,所以我有一个例外,如果出了问题,我想抛出这个例外。但它的行为很奇怪 public Calendar LoadCalendar(){ ... if (cal == null) { throw new NotImplementedException(); } _lastPollTime = DateTime.Now; ... } 我希望这个异常会被抛出到调用LoadCalendar的任何地方。相反,程序在DateTime停止;因为没

所以我有一个例外,如果出了问题,我想抛出这个例外。但它的行为很奇怪

public Calendar LoadCalendar(){
    ...

    if (cal == null)
    {
        throw new NotImplementedException();
    }

    _lastPollTime = DateTime.Now;
   ...
}
我希望这个异常会被抛出到调用LoadCalendar的任何地方。相反,程序在DateTime停止;因为没有实现异常


我做错了什么?如何将其抛出到方法的末尾?

您需要在调用堆栈的某个位置添加一个catch子句,该子句接收抛出的异常并以某种方式处理它

您可以在程序的主要功能中尝试以下操作:

static void Main()
{
    try
    {
        // put existing code here
    }
    catch( Exception e )
    {
    }
}
如果没有捕获,异常就没有地方可去,因此它会导致程序终止

这些处理异常的指南可能对您有用:

只需在App.xaml.cs类构造函数中订阅事件,您就可以在此事件中处理任何应用程序异常

public partial class App : Application
{
    public App()
    {
        this.DispatcherUnhandledException += App_DispatcherUnhandledException;
    }

    void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
    {
        ////Handle your application exception's here by e.Exception.
    }
}

你可以随时移动_lastPollTime=DateTime.Now;如果您希望在不考虑异常的情况下执行该异常,请重新编译并在调试模式下运行。是否在发布模式下编译?使用优化调试器时,不会总是命中正确的行号……问题是,如果cal==null,我想向调用LoadCalendar的人抛出一个异常。但我想我只能换一种方式了。@Ozitho我很感兴趣。。。您希望调用LoadCalendar的whomever函数在收到异常时做什么?它是一个HTTP服务器,我可能会将其更改为TimeoutException,使其捕获该异常并以500错误响应。