[C 知识回顾
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:58
学会使用异常
异常:指的是我们写的程序在运行时出现了错误,并且它会不断的蔓延、传播和扩散,有点像病毒一样。
异常通常由错误的代码引发,可能是用户的错误输入,可能是一方没有按照约定来传输格式,也可能是数据传输的过程中被篡改。我们会对自己认为有可能报错的代码进行 catch ,这称为捕获异常。
catch

throw
/// <summary>
/// 定义新异常<br/> /// </summary><br/> class MyException : Exception<br/> {<br/> public MyException(string msg) { }<br/> }/// <summary>
/// 抛出新定义的异常<br/> /// </summary><br/> static void ThrowMyExcetion()<br/> {<br/> throw new MyException("Sorry, this is test!");<br/> }</pre>
trytrycatchcatchcatchstatic void Main(string[] args)
{<br/> try<br/> {<br/> ThrowMyExcetion(); //直接调用抛出异常的方法<br/> }<br/> catch (MyException e)<br/> {<br/> Console.WriteLine(e);<br/> }Console.Read();
}</pre>
trytrycatchtrycatchcatchcatchcatchtrycatchcatchcatchstatic void Main(string[] args)
{<br/> StreamWriter sw = null;try
{<br/> sw = new StreamWriter(@"C:\book\小二和小三的故事.txt");<br/> sw.Write("You are 250.");<br/> }<br/> catch (FileNotFoundException e)<br/> {<br/> //将具体的异常放在第一位<br/> Console.WriteLine(e);<br/> }<br/> catch (IOException e)<br/> {<br/> //将并不具体的放在相对后面的位置<br/> Console.WriteLine(e);<br/> }<br/> catch (Exception e)<br/> {<br/> Console.WriteLine(e);<br/> }<br/> finally<br/> {<br/> if (sw != null)<br/> {<br/> sw.Close();<br/> }<br/> }Console.Read();
}</pre>catchfinallyFinallytrystatic void Main(string[] args)
{<br/> FileStream fs = null;<br/> FileInfo fi = new FileInfo(@"小二和小三的故事.txt");try
{<br/> fs = fi.OpenWrite();<br/> fs.WriteByte();<br/> }<br/> finally<br/> {<br/> //记住哦,如果你忘记 close,将会引发 IO 异常!<br/> //if (fs != null)<br/> //{<br/> // fs.Close();<br/> //}<br/> }try
{<br/> fs = fi.OpenWrite();<br/> fs.WriteByte();<br/> Console.WriteLine("OK!");<br/> }<br/> catch (IOException e)<br/> {<br/> Console.WriteLine("Fail!");<br/> }Console.Read();
}</pre>
“Fail!”,这是因为上面注释了需要关闭文件流的语句,你可以尝试下去掉注释看看结果,记住哦,IO 操作都应该在结束时释放资源。
WriteByte(0)(第9行).Close()tryfinallycatch
如果异常出现在析构函数中,则中止该析构函数并调用基类的析构函数(如果有)。
如果调用堆栈包含静态构造函数或静态字段初始值设定项,则会引发 TypeInitializationException,并将原始异常分配给新异常的 InnerException 属性。
如果到达线程的开头,将会终止线程。
C# 基础回顾系列
《C# 知识回顾 - 委托 delegate》、《C# 知识回顾 - 委托 delegate (续)》
《C# 知识回顾 - 事件入门》、《C# 知识回顾 - Event 事件》
【博主】反骨仔
【参考】微软官方文档
相关文章
-
[C#] 简单的 Helper 封装
[C#] 简单的 Helper 封装
- 互联网
- 2026年04月04日
-
[CF1526D] Kill Anton(逆序对,搜索)
[CF1526D] Kill Anton(逆序对,搜索)
- 互联网
- 2026年04月04日
-
[django]数据导出excel升级强化版(很强大!)
[django]数据导出excel升级强化版(很强大!)
- 互联网
- 2026年04月04日
-
[bzoj1269][AHOI2006文本编辑器editor] (splay模版题 or pb
[bzoj1269][AHOI2006文本编辑器editor] (splay模版题 or pb
- 互联网
- 2026年04月04日
-
[BestCoder Round #3] hdu 4908 BestCoder Sequence (计数)
[BestCoder Round #3] hdu 4908 BestCoder Sequence (计数)
- 互联网
- 2026年04月04日
-
[Android教程]EditText设置隐藏光标位置、选中文本和获取清除焦点
[Android教程]EditText设置隐藏光标位置、选中文本和获取清除焦点
- 互联网
- 2026年04月04日








