异常处理基础(C#参考)
来源:互联网 发布:java图片上传跨域请求 编辑:程序博客网 时间:2024/05/22 14:52
throw
throw语句用于发出程序执行期间出现的反常情况(异常)的信号
引发的异常是一个对象,其类派生自System.Exception
try-catch
一个try块后面接了一个或者多个catch子句,这些子句指定不同异常的处理程序。
try块中包含可能导致异常的代码。将执行此块,直至引发异常或成功运行。
例:强制转换null对象会引发NullReferenceException异常
object o2 = null;try{ int i2 = (int)o2; // Error}尽管可以不带参数使用catch子句,但不推荐这种用法。一般情况下,只应捕获知道如何恢复的异常。
so,应该始终指定派生自System.Exception的对象参数。如:
catch (InvalidCastException e) {}
try-catch语句中可以有多个特定的catch子句。在这种情况下,catch子句的顺序很重要,因为catch子句是按顺序查找的。使用更笼统的子句之前应该有更针对性的异常。
筛选想要处理的异常的一种方式是使用catch子句。也可以使用if进一步检查该异常,决定是否要对该异常进行处理,如果返回值为false,则继续查找合适catch子句异常处理程序。
Catch (ArgumentException e) if (e.ParamName == “…”){}
可在catch块中使用throw语句以重新引发已由catch语句捕获的异常。如:从IOException异常提取信息,然后向父方法抛出
catch (FileNotFoundException e){ // 这个方法处理FileNotFoundExceptions异常}catch (IOException e){ // 从这个异常中提取部分信息,然后抛给父方法 if (e.Source != null) Console.WriteLine("IOException source: {0}", e.Source); throw;}
还可以捕获一个异常然后引发一个不同的异常。不过作为捕获的异常最好是内部异常,引发的异常最好是自定义异常
在try块内,仅初始化在其中声明的变量。否则,在完成执行块之前,可能会出现异常。
如:变量n在try块内初始化,在try块外使用write方法输出n,将生成编译器错误。
static void Main() { int n; try { // 不要在这里初始化这个变量 n = 123; } catch { } // 错误:使用了未赋值的局部变量n Console.Write(n);}
try-finally
使用finally块,可以清理在try中分配的任何资源,而且,即使在try块中发生异常,也可以运行代码。
已处理的异常中会确保运行关联的finally块。
如果异常未处理,则finally块的执行取决于如何触发异常展开操作。
try-catch-finally
catch和finally一起使用的常见方式是:在try块中获取并使用资源,在catch块中处理异常,并在finally块中释放资源
public class EHClass{ void ReadFile(int index) { string path = @"c:\users\public\test.txt"; System.IO.StreamReader file = new System.IO.StreamReader(path); char[] buffer = new char[10]; try { file.ReadBlock(buffer, index, buffer.Length); } catch (System.IO.IOException e) { Console.WriteLine("Error reading from {0}. Message = {1}", path, e.Message); } finally { if (file != null) { file.Close(); } } }}
- 异常处理基础(C#参考)
- 【C#基础】异常处理
- C#基础-异常处理
- (C#基础)异常处理二三事
- C#超基础:异常处理
- 异常处理参考文章
- c#基础语言编程-异常处理
- python异常处理(基础)
- python异常处理(基础)
- java 基础(异常处理)
- python异常处理(基础)
- Java2 参考大全:第10章 异常处理 (5)
- 2、C#编程基础(一)——变量、常量、异常处理
- C# .net编程基础-try-catch异常处理-阶乘示例
- C# -- 异常和异常处理
- C#异常处理(编辑中)
- C#自定义异常处理(自定义例外)
- [连载]C#程序设计(12)--- 异常处理
- hdu 4751 Divide Groups bfs 搜索 解题报告
- 传球游戏_vijos1485
- 构造方法中super()的作用
- Codeforces 689C Mike and Chocolate Thieves (二分)
- Qt学习笔记——QTableWidget使用问题
- 异常处理基础(C#参考)
- 四大内部类
- leetcode——Isomorphic Strings
- 领域建模有很多种方法,对于同样的问题域使用不同的建模手段得到的模型可能也不尽相同。于是我经常听到这样一个问题:怎么才能保证建模的正确性?
- 用NSJSONSerialization解析NSURLSession中的json数据
- 我的linux命令笔记
- 网络状态监测
- 解决js中onkeydown事件键盘控制div移动鼠标卡顿
- nyoj 276 比较字母大小