Try/Catch/Finally C# with Example



Try/Catch/Finally C# with Example

Version ≥ 6.0 
As of C# 6.0, the await keyword can now be used within a catch and finally block. 
try { 
var client = new AsyncClient(); 
await client.DoSomething(); 
} catch (MyException ex) { 
await client.LogExceptionAsync(); 
throw; 
} finally { 
await client.CloseAsync(); 
} 
Version ≥ 5.0 Version < 6.0 
Prior to C# 6.0, you would need to do something along the lines of the following. Note that 6.0 also cleaned up the 
null checks with the Null Propagating operator. 
AsynClient client; 
MyException caughtException; 
try { 
client = new AsyncClient(); 
await client.DoSomething(); 
} catch (MyException ex) { 
caughtException = ex; 
} 
if (client != null) { 
if (caughtException != null) { 
await client.LogExceptionAsync(); 
} 
await client.CloseAsync(); 
if (caughtException != null) throw caughtException; 
} 
Please note that if you await a task not created by async (e.g. a task created by Task.Run), some debuggers may 
break on exceptions thrown by the task even when it is seemingly handled by the surrounding try/catch. This 
happens because the debugger considers it to be unhandled with respect to user code. In Visual Studio, there is an 
 

option called "Just My Code", which can be disabled to prevent the debugger from breaking in such situations. 

0 Comment's

Comment Form