68 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Exceptions
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Exceptions
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								An exception is an unexpected error that occurs while a program is running, such as an attempt to access a file that does not exist. It will stop the program if not handled.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Example
							 | 
						||
| 
								 | 
							
								If we try to read the text of a file that does not exist:
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								using System.IO;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								string content = File.ReadAllText(@"C:\DoesNotExist.txt");
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								A `FileNotFoundException` will be raised.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Some other common exceptions:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* `IndexOutofRangeException`: Attempted to access an array with an invalid index.
							 | 
						||
| 
								 | 
							
								* `NullReferenceException`: Attempted to use an unassigned reference variable.
							 | 
						||
| 
								 | 
							
								* `DivideByZeroException`: Attempted to divide by 0.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Best Practices
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Use try/catch/finally Blocks
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								try
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   var client = new WebClient();
							 | 
						||
| 
								 | 
							
								   var resultData = client.DownloadString("http://github.com");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								catch (Exception ex)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   //code for handling exceptions
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								finally
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   //this code is always executed, does not matter if an exception is thrown or not
							 | 
						||
| 
								 | 
							
								}         
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Handle Possible Exceptions With Conditions
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Instead of
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								try
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   conn.Close();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								catch (Exception ex)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   //code for handling exceptions.
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Try this
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								if (conn.State != ConnectionState.Closed)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    conn.Close();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 |