List<string> test = new List<string>() { "aa" , "bb" , "cc" };
TryForEach( test , x => Console.WriteLine( x ) );

private static void TryForEach<T>( IEnumerable<T> source , Action<T> proc ) {
  Queue<T> tmpq = new Queue<T>();
  foreach( var x in source ){
    tmpq.Enqueue( x );
  }
  while( tmpq.Count > 0 ) {
    try {
     while( tmpq.Count > 0 ) {
       proc( tmpq.Dequeue() );
     }
    } catch {}
  }
  return;
}