C# 学习之路 —— 异常处理

实际工作处理中,程序可能会因为一些内部或者代码运行环境的不同发生一些未知的错误。但是程序可能会因此奔溃,并且很难定位出错的原因。C# 提供一套异常处理机制,帮助开发人员捕获异常。

try
{}
catch (Exception e)
{}
...
catch (Exception e) 
{
  Console.WriteLine("Error Message is " + e.Message);
   }
finally
{}

如果出现异常会根据代码判断以此处理。
其中***finally 块用于执行给定的语句,不管异常是否被抛出都会执行。***

导致异常的原因

  • 使用 throw主动抛出异常,用于立即无条件地引发异常。
if (string.IsNullOrEmpty(value))
 {
     throw new System.Exception("value", "parameter value cannot be null");
 }
  • 在执行 C# 语句和表达式的过程中,有时会出现一些例外情况,使某些操作无法正常完成,此时就会引发一个异常。例如,在整数除法运算中,如果分母为零,则会引发 System.DivideByZeroException。有关可能以此方式引发的各种异常的列表。

处理

创建子线程去执行任务时,主线程不会知道子线程的异常情况,所以每个线程都需要一个try、catch.
在捕获异常的时候,我们经常习惯性写catch(Exception ex) ,这个并非具体的异常,最好是能具体到ArgumentException、FormatException等异常类,不要抛出”new Exception()” ,catch中啥也不干,异常要向顶层抛出 这种情况在自己写demo的时候可能比较常见,在编写catch(Exception ex)这块代码下啥也不干,不要这样做。切记出现的异常要想顶层抛出 。
合理使用finally块
finally关键字是不管抛出什么类型异常都会被执行,大多数的时候能在finally块下执行的代码,也能写在catch里面。那么finally关键字到底在什么情况下使用比较合适呢,比如清理资源,关闭流,回复状态等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值