一般我们在程序中,如果知道可能发生的异常类型,尽可能捕获,弹出提示给客户端,实在不知道的异常,捕获后写日志记录,业务逻辑上可忽略
1、NullReferenceException 空引用异常
2、StackOverflowException 栈溢出
3、TimeoutException 当已达到指定的超时时间时引发的异常
4、 ArgumentException 在向方法提供的其中一个参数无效时引发的异常 (在某些控件的事件中,可能会出现参数类型无效的异常)
5、 ThreadAbortException 在对 Abort 方法进行调用时引发的异常
6、IndexOutOfException:该类用于处理下标超出了数组长度所引发的异常
7、IOException:该类用于处理进行文件输入输出操作时所引发的异常
8、ArithmeticException:该类用于处理与算术有关的异常
9、DivideByZeroException:表示整数货十进制运算中试图除以零而引发的异常
二、类型转换
is的规则如下:
• 检查对象类型的兼容性,并返回结果,true或者false;
• 不会抛出异常;
• 如果对象为null,则返回值永远为false
as的规则如下:
• 检查对象类型的兼容性,并返回结果,如果不兼容就返回null;
• 不会抛出异常;
• 如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。
代码:
if ( o is A )
{A a =(A)o;}
A a=(A)o;
if(a!=null){}
三、接口与抽象类的异同?
相同点
• 都不能被直接实例化,都可以通过继承实现其抽象方法。
• 都是面向抽象编程的技术基础,实现了诸多的设计模式。
不同点
• 接口支持多继承;抽象类不能实现多继承。
• 接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。
• 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。
• 接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。
• 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。
• 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。
三、数组间的拷贝与克隆、深拷贝、浅拷贝的区别等