The following is an example taken from MSDN, try-catch (C# Reference)
catch (ArgumentException e) if (e.ParamName == "…") { }
They also say
Using catch arguments is one way to filter for the exceptions you want to handle. You can also use a predicate expression that further examines the exception to decide whether to handle it. If the predicate expression returns false, then the search for a handler continues.
Exception filters are preferable to catching and rethrowing (explained below) because filters leave the stack unharmed. If a later handler dumps the stack, you can see where the exception originally came from, rather than just the last place it was rethrown. A common use of exception filter expressions is logging. You can create a predicate function that always returns false that also outputs to a log, you can log exceptions as they go by without having to handle them and rethrow.
My code:
static bool LogFunction(System.Exception ex) { System.Console.WriteLine("Writing to logfile: {0}", ex.Message); return false; } static void Main(string[] args) { try { throw new System.ArgumentException("The exception message..."); } catch(System.Exception ex) if (LogFunction(ex)) { System.Console.WriteLine("This will not be executed, ever!"); } catch(System.ArgumentException ex) { // .... } }
Now, the compiler won't compile this (csc.exe), giving the following error message:
error CS1003: Syntax error, 'when' expected
Edit: The compiler raises the error for the line
error CS1003: Syntax error, 'when' expected
What am I doing wrong?
Thanks.
EDIT: I submitted feedback to MSDN pointing out the error in the documentation.
C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...
In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr. Stroustroupe.
C is a general-purpose language that most programmers learn before moving on to more complex languages. From Unix and Windows to Tic Tac Toe and Photoshop, several of the most commonly used applications today have been built on C. It is easy to learn because: A simple syntax with only 32 keywords.
C is more difficult to learn than JavaScript, but it's a valuable skill to have because most programming languages are actually implemented in C. This is because C is a “machine-level” language. So learning it will teach you how a computer works and will actually make learning new languages in the future easier.
That's an error on the MSDN site. As the compiler suggests, you should use when
instead of if
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With