C# Catch块内的代码限制

C# Catch块内的代码限制,c#,C#,我们可以在c#中的try-Catch的Catch块中编写任何代码语句吗, 或者对于我们不能或不应该在C#的Catch块中写入的内容是否有任何限制?您不能在Catch块中屈服或等待。因此,以下两个将无法编译: public IEnumerable<int> SomeSequence() { try { //do something } catch { yield 1; //error } } 不过,您可以

我们可以在c#中的try-Catch的Catch块中编写任何代码语句吗,
或者对于我们不能或不应该在C#的Catch块中写入的内容是否有任何限制?

您不能在Catch块中
屈服
等待
。因此,以下两个将无法编译:

public IEnumerable<int> SomeSequence()
{
    try
    {
        //do something
    }
    catch
    {
        yield 1; //error
    }
}
不过,您可以轻松解决此问题:

public async int SomeFuncAsync()
{
    Exception ex = null;
    try
    {
        //do something
    }
    catch(Exception exc)
    {
        ex = exc;
    }
    if(ex != null) await Task.Delay(1000); // no error
}

当然可以。你能举个例子吗?你的意思是什么?catch block是一个类似于if、for和。。。块,并且对编写任何代码没有任何限制…
wait
在vnext中可以使用catch。
产量的限制仍然有效,我相信谢谢你的回答。我会等待更多的答案。
public async int SomeFuncAsync()
{
    Exception ex = null;
    try
    {
        //do something
    }
    catch(Exception exc)
    {
        ex = exc;
    }
    if(ex != null) await Task.Delay(1000); // no error
}