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