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