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