66 lines
1.2 KiB
Markdown
66 lines
1.2 KiB
Markdown
|
---
|
|||
|
title: Exceptions
|
|||
|
localeTitle: 例外
|
|||
|
---
|
|||
|
# 例外
|
|||
|
|
|||
|
例外是程序运行时发生的意外错误,例如尝试访问不存在的文件。如果不处理,它将停止程序。
|
|||
|
|
|||
|
## 例
|
|||
|
|
|||
|
如果我们尝试读取不存在的文件的文本:
|
|||
|
```
|
|||
|
using System.IO;
|
|||
|
|
|||
|
string content = File.ReadAllText(@"C:\DoesNotExist.txt");
|
|||
|
```
|
|||
|
|
|||
|
将引发`FileNotFoundException` 。
|
|||
|
|
|||
|
其他一些常见例外:
|
|||
|
|
|||
|
* `IndexOutofRangeException` :尝试访问具有无效索引的数组。
|
|||
|
* `NullReferenceException` :尝试使用未分配的引用变量。
|
|||
|
* `DivideByZeroException` :尝试除以0。
|
|||
|
|
|||
|
## 最佳实践
|
|||
|
|
|||
|
### 使用try / catch / finally块
|
|||
|
```
|
|||
|
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();
|
|||
|
}
|
|||
|
|
|||
|
```
|