我们可以在c#中的try catch的Catch块中编写任何代码语句, 或者我们不能或不应该在C#的Catch块内写什么限制?
答案 0 :(得分:1)
你不能在catch区内yield
或await
。所以以下两个不会编译:
public IEnumerable<int> SomeSequence()
{
try
{
//do something
}
catch
{
yield 1; //error
}
}
或
public async int SomeFuncAsync()
{
try
{
//do something
}
catch
{
await Task.Delay(1000); //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
}