Inheritance: ArgumentException
        public void OneException()
        {
            var multi = new MultiException("one", new ValidationException("one"));

            multi.InnerExceptions.Count().Should().Be(1);
            multi.Message.Should().Be("one");
        }
        public void MultiExceptions()
        {
            var multi = new MultiException("one",
                                           new[] { new ValidationException("one"),
                                                   new ValidationException("two") });

            multi.InnerExceptions.Count().Should().Be(2);
            multi.Message.Should().Be($"one{Environment.NewLine}two");
        }
Esempio n. 3
0
        private static int Run(Options options)
        {
            try
            {
                using (StreamReader sr = new StreamReader(File.OpenRead(options.File)))
                {
                    StreamLexer parser = new StreamLexer(sr, options.Verbose, options.Debug, options.MultiError);
                    Program     prog   = parser.Parse();
                    prog.Run();
                }
            }
            catch (Exception ex)
            {
                switch (ex)
                {
                case InvalidSyntaxException exception:
                    InvalidSyntaxException ise = exception;
                    OutputEx(ise.Message, ise.Line, ise.Position, options.File);
                    break;

                case AssertionException exception:
                    AssertionException ae = exception;
                    OutputEx(ae.Message, ae.Line, ae.Position, options.File);
                    break;

                case MplDivideByZeroException exception:
                    MplDivideByZeroException mdbze = exception;
                    OutputEx(mdbze.Message, mdbze.Line, mdbze.Position, options.File);
                    break;

                case RuntimeException exception:
                    RuntimeException rte = exception;
                    OutputEx(rte.Message, rte.Line, rte.Position, options.File);
                    break;

                case UnexpectedCharacterException exception:
                    UnexpectedCharacterException uece = exception;
                    OutputEx(uece.Message, uece.Line, uece.Position, options.File);
                    break;

                case UnsupportedCharacterException exception:
                    UnsupportedCharacterException usce = exception;
                    OutputEx(usce.Message, usce.Line, usce.Position, options.File);
                    break;

                case MultiException exception:
                    MultiException me = exception;
                    OutputMultiEx(me, options.File);
                    break;

                default:
                    throw;
                }
            }

            return(0);
        }
Esempio n. 4
0
 /// <summary>
 ///   Deletes several arrFileInfo at once and optionally consolidates any exceptions.
 /// </summary>
 /// <param name="arrFileInfo"> The arrFileInfo. </param>
 /// <param name="consolidateExceptions"> if set to <c>true</c> exceptions are consolidated and the processing is not interrupted. </param>
 /// <example>
 ///   <code>var arrFileInfo = directory.GetFiles("*.txt", "*.xml");
 ///     arrFileInfo.Delete()</code>
 /// </example>
 public static void Delete(this FileInfo[] arrFileInfo, bool consolidateExceptions = true)
 {
     if (consolidateExceptions)
     {
         /*
          * var exceptions = new List<Exception>();
          * foreach (var file in arrFileInfo)
          * {
          *  try
          *  {
          *      file.TurnOffReadOnly();
          *      file.Delete();
          *  }
          *  catch (Exception e)
          *  {
          *      exceptions.Add(e);
          *  }
          * }
          * if (exceptions.Any())
          * {
          *  throw CombinedException.Combine(
          *      "Error while deleting one or several arrFileInfo, see InnerExceptions array for details.",
          *      exceptions);
          * }
          */
         var multiExp = new MultiException();
         foreach (var file in arrFileInfo)
         {
             try
             {
                 file.TurnOffReadOnly();
                 file.Delete();
             }
             catch (Exception exp)
             {
                 multiExp.Add(exp);
             }
         }
         if (multiExp.Any())
         {
             throw multiExp;
         }
     }
     else
     {
         foreach (var file in arrFileInfo)
         {
             file.Delete();
         }
     }
 }
Esempio n. 5
0
        private static void OutputMultiEx(MultiException me, string filePath)
        {
            Console.Write("-----------------------------------\n");
            Console.Write($"Encountered {me.Exceptions.Count} exceptions during parsing:\n");
            foreach (Exception ex in me.Exceptions)
            {
                switch (ex)
                {
                case InvalidSyntaxException exception:
                    InvalidSyntaxException ise = exception;
                    OutputEx(ise.Message, ise.Line, ise.Position, filePath);
                    break;

                case AssertionException exception:
                    AssertionException ae = exception;
                    OutputEx(ae.Message, ae.Line, ae.Position, filePath);
                    break;

                case MplDivideByZeroException exception:
                    MplDivideByZeroException mdbze = exception;
                    OutputEx(mdbze.Message, mdbze.Line, mdbze.Position, filePath);
                    break;

                case RuntimeException exception:
                    RuntimeException rte = exception;
                    OutputEx(rte.Message, rte.Line, rte.Position, filePath);
                    break;

                case UnexpectedCharacterException exception:
                    UnexpectedCharacterException uece = exception;
                    OutputEx(uece.Message, uece.Line, uece.Position, filePath);
                    break;

                case UnsupportedCharacterException exception:
                    UnsupportedCharacterException usce = exception;
                    OutputEx(usce.Message, usce.Line, usce.Position, filePath);
                    break;

                default:
                    throw ex;
                }
            }
        }
 /// <summary>
 ///   Deletes several arrFileInfo at once and optionally consolidates any exceptions.
 /// </summary>
 /// <param name="arrFileInfo"> The arrFileInfo. </param>
 /// <param name="consolidateExceptions"> if set to <c>true</c> exceptions are consolidated and the processing is not interrupted. </param>
 /// <example>
 ///   <code>var arrFileInfo = directory.GetFiles("*.txt", "*.xml");
 ///     arrFileInfo.Delete()</code>
 /// </example>
 public static void Delete(this FileInfo[] arrFileInfo, bool consolidateExceptions = true)
 {
     if (consolidateExceptions)
     {
         /*
         var exceptions = new List<Exception>();
         foreach (var file in arrFileInfo)
         {
             try
             {
                 file.TurnOffReadOnly();
                 file.Delete();
             }
             catch (Exception e)
             {
                 exceptions.Add(e);
             }
         }
         if (exceptions.Any())
         {
             throw CombinedException.Combine(
                 "Error while deleting one or several arrFileInfo, see InnerExceptions array for details.",
                 exceptions);
         }
         */
         var multiExp = new MultiException();
         foreach (var file in arrFileInfo)
         {
             try
             {
                 file.TurnOffReadOnly();
                 file.Delete();
             }
             catch (Exception exp)
             {
                 multiExp.Add(exp);
             }
         }
         if (multiExp.Any())
         {
             throw multiExp;
         }
     }
     else
     {
         foreach (var file in arrFileInfo)
             file.Delete();
     }
 }