Visual Studio 2005 自动抓取选中代码中的各个Exception 不用想了,哪有十全十美的事用try Catch 确实很占用资源,因为它要跟踪代码,所以都在判断确实会抛出异常时才用。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不用try catch 那用什么能解决? no,各位可能都理解偏了。 比如一个方法: public bool CreateDirectory(string dirName, out string msg) { try { Directory.CreateDirectory(dirName); } catch (IOException ioe) { msg = "目录是只读的或不为空等"; return false; } catch (UnauthorizedAccessException uace) { msg = "没有创建权限"; return false; } catch (ArgumentException ae) { msg = "无效的路径"; return false; } catch (NotSupportedException nse) { msg = "试图创建只使用冒号字符 (:) 的目录"; return false; } catch (Exception e) { msg = "其他目录创建异常"; return false; } msg = "目录创建成功"; return true; }有这么多种exception要抓取,我总不能全背诵下来,某些书上说单用一个总的Exception,也就是程序中最后的那个exception,也不是很有效率;而如netbeans这样的java开发工具,就可以在选中Directory.CreateDirectory(dirName);后自动抓取其全部exception。各位理解了吗? C#中所有的异常类都是从Exception继承来的,所以你只用Exception就可以捕获到所有的异常了,这个没有任何问题.我不理解什么是"也不是很有效率"?这是什么意思呢? 比如,你完全可以使用如下的方法而不是因此降低执行效率: public bool CreateDirectory(string dirName, out string msg) { try { Directory.CreateDirectory(dirName); } catch (Exception e) { msg = e.Message; return false; } msg = "目录创建成功"; return true; } 我前几日书店翻了一本书,好像叫什么 .net efficiency,我翻到的那页就是:不要轻易catch这个大的exception。 VS.net 2005下面应该没有这样的工具,等下个版本吧如果一个类抛出N个异常的话,可以在程序某处自己封装一下,捕获到这些异常后,抛出你自己定义的一个异常,以后就用这个异常来处理。至于“C#中所有的异常类都是从Exception继承来的,所以你只用Exception就可以捕获到所有的异常了,这个没有任何问题.”这个说法是值得商榷的,因为在程序运行的任何时候都可能抛出StackOverException或者OutOfMemoryException,这样你的程序可能会正好捕捉到这两个异常,而运行本不应该进行的异常方式。 伟大的VS,伟大的VS,它继承了微软的一切优良传统,这个时候它不是一个人在战斗,不是一个人在战斗,比尔盖茨这一刻灵魂附体 概念不清,看书的时候一定要理解作者的意图,这样一知半解还不如不看书……1、catch没有任何效率可言,抛出异常是一个开销比较大的动作,而相较而言catch的开销可以忽略不计,所以是尽量不要抛出异常,而不是尽量不要catch异常。2、并不是所有的异常都要捕获的,处理异常的标准是,我知道它可能会出错且我明确的知道这个错误应该这样处理,而不是我要把所有的异常全都捕获下来,这样的结果只会是出了错都不知道,异常本来就是一种保护措施。3、不要catch Exception并不是因为什么鬼效率,正如上面所说,必须是明确知道这个错误应该怎样处理,我明确知道的错误,且有能力处理的时候才能处理,显然大部分代码是不能处理所有异常的。只有诸如异常记录、异常显示等代码才应该捕获所有异常。 异常屏蔽在有些时候也是有用的,例如线程发现出现了异常,把自己关闭重启。Windows服务发现出现了异常,记录异常后重启。WebService发现出现了异常,告知客户端后关闭自己。 http://www.microsoft.com/downloads/details.aspx?familyid=7855A3ED-071A-4584-877C-A6F0CE690F34&displaylang=enhttp://www.gotdotnet.com/Team/FxCop/ http://blogs.msdn.com/fxcop/archive/2006/06/14/631923.aspx FxCop 1.36 Beta 2 a code analysis tool for .NET managed assemblies 确实是个好东西 ‘未做’附近有语法错误 从复制过来的项目文件夹打开项目后,怎么弄出form1.cs[设计]这个页面呢? 如何设置OWC11图表的边框LineStyle? WebForm下看不到word,利马揭帖 看看这个是怎么做的 域服务器的问题,高分求救! 请问有人用过NTService控件编写winfrom带窗体的服务吗? 急!!!100分求Graphics画图的问题 求救:前几天在论坛上面看到一位兄弟写一篇关于向领导建议采用.NET解决方案的文章,现在找不到了 请教一个GDI绘图的简单问题 xml中文乱码 学C#快没信心了!
public bool CreateDirectory(string dirName, out string msg) {
try {
Directory.CreateDirectory(dirName);
} catch (IOException ioe) {
msg = "目录是只读的或不为空等";
return false;
} catch (UnauthorizedAccessException uace) {
msg = "没有创建权限";
return false;
} catch (ArgumentException ae) {
msg = "无效的路径";
return false;
} catch (NotSupportedException nse) {
msg = "试图创建只使用冒号字符 (:) 的目录";
return false;
} catch (Exception e) {
msg = "其他目录创建异常";
return false;
}
msg = "目录创建成功";
return true;
}有这么多种exception要抓取,我总不能全背诵下来,某些书上说单用一个总的Exception,也就是程序中最后的那个exception,也不是很有效率;而如netbeans这样的java开发工具,就可以在选中Directory.CreateDirectory(dirName);后自动抓取其全部exception。各位理解了吗?
这是什么意思呢?
public bool CreateDirectory(string dirName, out string msg) {
try
{
Directory.CreateDirectory(dirName);
}
catch (Exception e)
{
msg = e.Message;
return false;
}
msg = "目录创建成功";
return true;
}
如果一个类抛出N个异常的话,可以在程序某处自己封装一下,捕获到这些异常后,抛出你自己定义的一个异常,以后就用这个异常来处理。至于“C#中所有的异常类都是从Exception继承来的,所以你只用Exception就可以捕获到所有的异常了,这个没有任何问题.”这个说法是值得商榷的,因为在程序运行的任何时候都可能抛出StackOverException或者OutOfMemoryException,这样你的程序可能会正好捕捉到这两个异常,而运行本不应该进行的异常方式。
http://www.gotdotnet.com/Team/FxCop/