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