c#如何处理好异常? 一旦程序出现异常,我用try catch 会不会因此程序不会崩溃,我只需要记录错误的地方!
解决方案 »
- c#winform中上一条下一条的问题
- ftp自动登录到远程,怎样判断文件夹是否有文件,有文件就自动下载并下载文件到本地?
- 关于C#调用C++ DLL的问题,急!!!!!
- 怎样延后代码执行?
- C#顯示MS SQL2000數據表
- 最近想做一个C#的应用程序,大家给我推荐一本书好吧!谢谢!
- 急!!!如何实现dotnetfx的静默安装?
- Linkbutton的onclick传参数???
- [求助]“更改LABEL控件的文字颜色”
- 调用this.Close()什么时候可以关闭窗口,什么时候关闭不了?
- 在c# 窗体中如何嵌入Excel,并完成相应的修改和保存?
- 请教下怎么在WINFROM窗体上修改CONFIG信息后进行保存
查看系统操作。
web里可通过转到出错页实现错误记录
比如一个即时消息软件,首先需要连接服务器,
try {
//连接服务器
}
catch(SocketException) {
//提示用户检查网络连接
return;
}
//下载好友列表
异常并不是程序错误,应该像对待for循环那样,把异常当作普通的处理流程,灵活使用。
在更深的层,不要捕获异常,或者仅仅对异常进行一个包装以便让异常类型更明确,例如 catch(ex Exception){throw new myExceptionABCParseError("ABC系统无法解析的命令。",ex);},将异常继续抛到上一层调用者去处理。
对于一些WindowsService程序,需要无人值守地执行,在ui层不是让客户去操作,而是将错误写入系统日志。
总之,大多数时候继续抛出异常,除非上级无法接住它。
当利用new关键字去初始化分配一块内存失败时
StackOverflowException
当执行程序有利用到堆栈资源时(通常是执行Recursion或太多的循环),将堆栈资源耗尽时
NullReferenceException
当要利用Reference对象时,却是NullReference
TypeInitializationException
若静态对象发生错误,但又缺乏catch区段去处理与对应时
ArrayTypeMismatchException
当存入数据与数组中数据类型不同时
IndexOutOfRangeException
当超过数组的限定范围时
MulticastNotSupportedException
当要合并两个委派对象失败时
ArithmeticException
一般在运算失败时,这包含了DivideByzeroException与OverflowException两种异常
DivideByzeroException
当使用除法运算时,分母为0所造成的错误时
OverflowException
当运算后超过数据类型的合法范围时
认同通过自定义异常类记录log。