java中使用异常的优缺点_c# – 检查异常的优缺点是什么?

咩.

检查异常是正确使用的好东西,但往往导致以下事情:

doSomething();

try

{

somethingThrowsCheckedException();

}

catch(ThatCheckedException)

{ }

doSomethingElse();

坦白说,这是错误的.你应该让异常不能处理起泡.

检查的正常使用的异常情况可能很好.但是非常频繁地,正确检查异常的结果是这样的方法签名:

public void itMightThrow() throws Exception1, Exception2, Exception3, Exception4, // ...

Exception12, Exception13, /* ... */ Exception4499379874

{

// body

}

我夸张吗只是轻微.

编辑:

也就是说,有一件事我喜欢C#对Java,当涉及异常处理与检查异常无关(我可以得到,如果我去与规范#无论如何).不,我喜欢的是,当你抛出异常时,C#中的堆栈跟踪是填充的,而不是像在Java中一样实例化的.

编辑2:这是给评论者@Yishai,@Eddie,@Bill K:

首先,您应该查看this thread有关如何获取堆栈跟踪的信息,而不实例化异常.请记住,步行堆栈是一个沉重的过程,不应该定期进行.

第二,我喜欢C#的异常堆栈跟踪的原因是在throwal而不是实例化的原因是你可以这样做:

private MyException NewException(string message)

{

MyException e = new MyException(message);

Logger.LogException(message, e);

return e;

}

// and elsewhere...

if(mustThrow)

{

throw NewException("WHOOOOPSIEE!");

}

这是Java中无法在堆栈跟踪中包含NewException方法的一个技巧.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值