C#异常
Posted HelloCopyer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#异常相关的知识,希望对你有一定的参考价值。
介绍内容
什么是异常
try语句
catch子句
finally子句
什么是异常
异常是程序中的运行时错误,它违反了系统约束或应用程序约束,或出现了在正常操作时未预料的情形。例如,程序试图除以0或试图写一个只读文件。当这些发生时,系统捕获这个错误并抛出(raise)一个异常。
如果程序没有提供处理该异常的代码,系统会挂起这个程序。例如,下面的代码在试图用0除一个数时抛出一个异常:
static void Main()
{
int x = 10, y = 0;
x /= y; //用0除以一个数时抛出一个异常
}
当这段代码运行时,系统显示下面的错误信息:
Unhandled Exception: System.DivideByZeroException: Attempted to divide by zero.
at Exceptions_1.Program.Main() in C:\Progs\Exceptions\Program.cs:line 12
try语句
try语句用来指明为避免出现异常而被保护的代码段,并在发生异常时提供代码处理异常。try语句由3个部分组成:
try块包含为避免出现异常而被保护的代码。
catch子句部分含有一个或多个catch子句。这些是处理异常的代码段,它们也称为是异常处理程序。
finally块含有在所有情况下都要被执行的代码,无论有没有异常发生。
static void Main()
{
int x = 10;
try
{
int y = 0;
x /= y; //抛出一个异常
}
catch
{
... //处理异常的代码
Console.WriteLine("Handling all exceptions - Keep on Running");
}
}
这段代码产生以下消息。注意,除了输出消息,没有异常已经发生的迹象。
Handling all exceptions - Keep on Running
catch
catch子句处理异常。它有3种形式,允许不同级别的处理。
1:
catch
{
//1.catch关键字之后没有任何参数
//2.匹配try块中引起的任何类型异常
Statements
}
2:
catch(ExceptionType)
{
//1.带有异常类的名称作为单一参数
//2.匹配任何该名称类型的异常
Statements
}
3:
catch(ExceptionType ExceptionVariable)
{
//1.在异常类名称之后包括一个标识符
//2.该标识符在catch字句块中相当于一个本地变量,并被成为异常变量
//3.异常变量引用异常对象,并能被用于访问该对象信息
Statements
}
finally
如果程序的控制流进入了一个带finally块的try语句,那么finally始终会被执行。
如果在try块内部没有异常发生,那么在try块的结尾,控制流跳过任何catch子句并到finally块。
如果在try块内部发生了异常,那么在catch子句段中无论哪一个适当的catch子句被执行,接着就是finally块的执行。
try
{
if (inVal < 10) {
Console.Write("First Branch - ");
return;
}
else
Console.Write("Second Branch - ");
}
finally
{
Console.WriteLine("In finally statement");
}
这段代码在inVal值为5时产生以下输出:
First Branch - In finally statement
以上是关于C#异常的主要内容,如果未能解决你的问题,请参考以下文章
此 Canon SDK C++ 代码片段的等效 C# 代码是啥?