.Net 中Exception 于 JAVA 中Exception 的讨论,大家给点意见
本人一直从事C#的程序开发工作,但是我发现在Exception 这方面比JAVA差.
就对于Custom Exception的处理,虽然在.NET和JAVA里面都支持Custom Exception。但是.NET里面没有JAVA里面做得好。举个例子:
public class CustomExcetion : Exception
{
//Various Methods To Do Different Job
}
在.NET中:
public void Test(){
try
{
//codes
throw new CustomExcetion();// pay attention on this line
}
catch(CustomExcetion e){}
}
在JAVA中:
public void Test() throws CustomExcetion{
try
{
//codes
}
catch(CustomExcetion e){}
}
在.NET中必须抛出一个CustomExcetion, catch才能捕捉到。而在JAVA里面指定了Test()抛出的错误就是CustomExcetion类型的。
问题:
在.NET中:在一个函数里面错误是不能被控制的,换句话我们不知道什么时候,什么地方会抛出什么样的错误,如果我们事先都知道了会抛出什么样子的错误,我们还需要try,catch干什么呢?不事先把这个错误解决了,还让它抛出来干什么?如果我们把throw new CustomExcetion();去掉,catch是捕捉不到错误的。这是最大的问题。
那么在JAVA里面,我觉得就做得比较好,自定义的Exception能够跟好的被运用,因为已经定义了Test()这个函数抛出的错误就是CustomExcetion类型的,不需要自己去抛出CustomExcetion类型的错误,而且这个错误也是没有办法的预测的。
在很大程度上Custom Exception是很有作用的,根据业务的不同,我捕捉到exception了可能还要进行一些其他的操作,我觉得.NET在Exception需要改进。
大家有什么不同的意见,很希望大家能够一起讨论。