Visual Studio 2005 自动抓取选中代码中的各个Exception
请问Visual Studio 2005 自动抓取选中代码中的各个Exception。我不想catch(Exception ex)了事,听说这样写不是很好。我知道一些java的ide可以这么做的。
谢谢! --------------------编程问答-------------------- ???自动抓取?!
VS 2005 在调试时一旦发生未处理异常,就会自动在抛出位置停止,无需任何设置! --------------------编程问答-------------------- 不用想了,哪有十全十美的事
用try Catch 确实很占用资源,因为它要跟踪代码,所以都在判断确实会抛出异常时才用。 --------------------编程问答-------------------- 楼上说的是
你也可以断点调试,好用的很 --------------------编程问答-------------------- 你是为了调试还是为了捕获异常呢? --------------------编程问答-------------------- 不用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。 --------------------编程问答-------------------- 友情UP --------------------编程问答-------------------- 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=en
http://www.gotdotnet.com/Team/FxCop/ --------------------编程问答-------------------- up --------------------编程问答-------------------- http://blogs.msdn.com/fxcop/archive/2006/06/14/631923.aspx --------------------编程问答-------------------- FxCop 1.36 Beta 2 a code 易做图ysis tool for .NET managed assemblies 确实是个好东西
补充:.NET技术 , C#