66 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						||
title: Exceptions
 | 
						||
localeTitle: Исключения
 | 
						||
---
 | 
						||
# Исключения
 | 
						||
 | 
						||
Исключением является непредвиденная ошибка, возникающая во время работы программы, например попытка получить доступ к файлу, который не существует. Он остановит программу, если не будет обработан.
 | 
						||
 | 
						||
## пример
 | 
						||
 | 
						||
Если мы попытаемся прочитать текст файла, который не существует:
 | 
						||
```
 | 
						||
using System.IO; 
 | 
						||
 
 | 
						||
 string content = File.ReadAllText(@"C:\DoesNotExist.txt"); 
 | 
						||
```
 | 
						||
 | 
						||
Будет `FileNotFoundException` .
 | 
						||
 | 
						||
Некоторые другие общие исключения:
 | 
						||
 | 
						||
*   `IndexOutofRangeException` : Попытка получить доступ к массиву с недопустимым индексом.
 | 
						||
*   `NullReferenceException` : Попытка использовать неназначенную ссылочную переменную.
 | 
						||
*   `DivideByZeroException` : Попытка деления на 0.
 | 
						||
 | 
						||
## Лучшие практики
 | 
						||
 | 
						||
### Используйте 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 
 | 
						||
 } 
 | 
						||
```
 | 
						||
 | 
						||
### Обращение с возможными исключениями с условиями
 | 
						||
 | 
						||
Вместо
 | 
						||
```
 | 
						||
try 
 | 
						||
 { 
 | 
						||
   conn.Close(); 
 | 
						||
 } 
 | 
						||
 catch (Exception ex) 
 | 
						||
 { 
 | 
						||
   //code for handling exceptions. 
 | 
						||
 } 
 | 
						||
```
 | 
						||
 | 
						||
Попробуй это
 | 
						||
```
 | 
						||
if (conn.State != ConnectionState.Closed) 
 | 
						||
 { 
 | 
						||
    conn.Close(); 
 | 
						||
 } 
 | 
						||
 | 
						||
``` |