我試圖捕捉一些特定的例外。問題是我的程式很復雜,可以將此例外隱藏為“主要”例外或聚合例外中的內部例外。(它也可能是內部例外的內部等等)我如何以優雅的方式捕獲它?到目前為止我所做的
catch (Exception e) when (e.InnerException is MyOwnSpecialErrorException)
{
var e1 = e.InnerException as MyOwnSpecialErrorException;
success = false;
exception = e1;
}
并且:
catch (MyOwnSpecialErrorException e)
{
success = false;
exception = e;
}
當然,這里我只關注一個嵌套內部例外的情況,并且假設它是第一個內部例外。有人能想出辦法嗎?
uj5u.com熱心網友回復:
這是我能想到的更簡潔的語法,以is運算子為特色:
bool success;
MyOwnSpecialErrorException exception;
try
{
//...
}
catch (AggregateException aex)
when (aex.Flatten().InnerExceptions.OfType<MyOwnSpecialErrorException>()
.FirstOrDefault() is MyOwnSpecialErrorException myEx)
{
success = false; exception = myEx;
}
catch (MyOwnSpecialErrorException ex)
{
success = false; exception = ex;
}
catch
{
success = true; // Ignore all other exceptions
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/481344.html
上一篇:用更少的行數處理Python例外
