前言
看完视频之后就记得try…catch是捕获异常的,没想过会有会很多的捕获异常的方式。
关键字
学习C#异常处理需要先知道四个关键词是干什么用的:
try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch
catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获
finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭
throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成
.NET默认处理机制
如果代码出错,会直接报错,程序当然也运行不了了。
使用try…catch手动捕获异常
class Program
{
static void Main(string[] args)
{
int a = 0;
int result = 0;
try
{
result = 100/a;
Console.WriteLine("这里不会执行");
}
catch (Exception exception)
{
Console.WriteLine("出现异常");
}
Console.WriteLine(result);
Console.ReadKey();
}
}
通过try…catch…finally手动捕获异常。
try
{
//有可能发生异常
}
catch(Exception ex)
{
//处理异常
}
finally
{
//清理
}
如果没有异常发生,就直接到finally语句块中。
finally语句块是必须执行的。
这里的catch和finally语句块是可选的。try语句块后面可以跟1个或多个catch语句块,try语句块后面可以直接跟finally语句块。
Exception是所有异常的基类。
使用try…多个catch…finally手动捕获异常
class Program
{
static void Main(string[] args)
{
int a = 0;
int result = 0;
try
{
result = 100/a;
Console.WriteLine("这里不会执行");
}
catch (DivideByZeroException exception)
{
Console.WriteLine("不能被0除的异常");
}
catch (Exception ex)
{
Console.WriteLine("异常");
}
finally
{
Console.WriteLine("放行吧,肯定会执行到我这里的~~");
}
Console.WriteLine(result);
Console.ReadKey();
}
}
只要有一个catch语句块捕获到异常,其它catch语句块不执行。
使用try…catch(不带括号,不带参数)手动捕获异常
class Program
{
static void Main(string[] args)
{
int a = 0;
int result = 0;
try
{
result = 100/a;
Console.WriteLine("这里不会执行");
}
catch
{
Console.WriteLine("异常");
}
Console.WriteLine(result);
Console.ReadKey();
}
}
可以捕获任何异常
总结
.NET异常处理并不是标准的try…catch…finally,可以是很灵活的。