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();
 | |
| }
 | |
| ```
 |