记录点滴收获,汇聚知识乐园

脚步无法到达的地方,目光可以到达;目光无法到达的地方,梦想可以到达

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

异常处理

异常处理有一个非常典型的结构,即try{}catch(){}finally{}语句,try语句块中运行正常的逻辑,如果正常的逻辑出错,则会去执行catch块中的代码,finally块中的代码不管正常的逻辑是否出错,都会被执行。在C语言的时代是没有异常处理的,C中是通过函数返回值来进行异常处理的,这样的话正常的业务逻辑和错误处理的业务逻辑放在一起,这是一种非常差的程序结构,不易于程序的维护,同时程序的错误会隐藏很深。

下面我们来看一个异常处理的例子,首先不做任何的异常处理

复制代码
using System;
class Library
{
public static void Print()
{
Console.WriteLine("Hello Guowenhui");
}
}
class Application
{
public static void Main()
{
Library.Print();
Library.Print();
}
}
复制代码

然后我们在程序库开发的过程中进行异常处理,作为程序库开发人员,应该积极的去抛异常,将异常报告给调用者(应用程序开发人员),作为应用程序开发人员,应该去积极的捕获异常

复制代码
using System;
class Library
{
public static void Print()
{
try
{
Console.WriteLine("Hello Guowenhui");
}
catch(Exception ex)
{
throw ex; //捕获到异常后将异常抛给调用者
}
}
}
class Application
{
public static void Main()
{
try
{
Library.Print();
Library.Print();
}
catch(Exception ex)
{
Console.WriteLine(ex); //捕获到异常后对异常进行了处理
}
}
}
复制代码

finally{}语句块主要执行一些资源的清理,如果finally语句后面还有语句,那么着些语句不一定会得到执行,在什么情况下会得到执行了,1.程序没有任何异常。2.程序出现了异常,但是被捕获了,捕获以后可以再抛出,也可以对异常进行处理。总之是要在一切都正常的情况下才会被执行。

异常是API之间的一种通知机制,当异常被触发后就会被抛出,然后通过调用关系向上传播,在更高层被捕获或处理。当然异常被捕获以后也可以不作任何处理,也不再上抛,这就是将异常隐藏起来了,这是一种很危险的处理方式。

异常继承的层次结构,所有的异常类型都继承自Exception,系统异常继承自SystemException,用户自定义异常继承自ApplicationException,同时用户自定义异常和系统异常均继承自Exception



posted on   guowenhui  阅读(242)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示