Tag: 线程exception

处理KeyNotFoundException的最佳方法

我正在使用字典为我正在处理的程序执行查找。 我通过字典运行了一堆密钥,我期望有一些密钥没有价值。 我发现它发生的KeyNotFoundException ,并吸收它。 所有其他exception将传播到顶部。 这是处理这个问题的最好方法吗? 或者我应该使用不同的查找? 该字典使用int作为其键,并使用自定义类作为其值。

Xcode 4.5破坏XIBs?

我正在使用新的xcode 4.5,我有一些视图控制器上的代码行: DiscoverCell* cell=[table dequeueReusableCellWithIdentifier:@"DiscoverCell"]; if(cell==nil){ NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DiscoverCell" owner:self options:nil]; cell = [nib objectAtIndex:0]; } 当我运行应用程序其抛出:终止应用程序由于未捕获的exception'NSInternalInconsistencyException',原因:'NIB数据无效。 在LoadNib行上,那是什么? 这个xcode是一些苹果垃圾吗?

Debug.Assert与特定的抛出exception

我刚刚开始浏览John Robbins的“debuggingMS .Net 2.0应用程序”,并且因为Debug.Assert(…)的传福音而感到困惑。 他指出,良好实施的Asserts存储状态,有些时候是错误的,例如: Debug.Assert(i > 3, "i > 3", "This means I got a bad parameter"); 现在,我个人觉得他很喜欢重复他的testing,而没有一个明智的“商业逻辑”评论,也许“我不应该因为stream水漫游的过程而发生”。 所以,我认为我认为Asserts是一种低级别的“让我们保护我的假设”的东西…假设一个人认为这是一个testing,只需要在debugging中做 – 即你保护自己免受同事和未来的程序员,并希望他们实际上testing的东西。 但是我得不到的是,他接着说,除了正常的error handling之外,你还应该使用断言。 现在我想象的是这样的: Debug.Assert(i > 3, "i must be greater than 3 because of the flibbity widgit status"); if (i <= 3) { throw new ArgumentOutOfRangeException("i", "i must be > 3 because… i=" […]

为什么重新抛出exception?

我多次看过下面的代码: try { … // some code } catch (Exception ex) { … // Do something throw new CustomException(ex); // or // throw; // or // throw ex; } 你能解释重新抛出exception的目的吗? 它遵循exception处理中的模式/最佳实践吗? (我读过的地方叫做“呼叫者通知”模式?)

如何处理WCFexception(带有代码的统一列表)

我试图延长这个答案,以使WCF客户端重试暂时networking故障,并处理其他情况下需要重试,如​​身份validation到期。 题: 什么是需要处理的WCFexception,以及处理它们的正确方法是什么? 以下是我希望看到的一些示例技术,以代替proxy.abort()或除此之外: 重试前延迟X秒 closures并重新创build一个新()WCF客户端。 configuration旧的。 不要重试并重新抛出这个错误 重试N次,然后抛出 由于一个人不太可能知道所有的例外情况或解决方法,因此请分享您的知识。 我将在下面的代码示例中汇总答案和方法。 // USAGE SAMPLE //int newOrderId = 0; // need a value for definite assignment //Service<IOrderService>.Use(orderService=> //{ // newOrderId = orderService.PlaceOrder(request); //} /// <summary> /// A safe WCF Proxy suitable when sessionmode=false /// </summary> /// <param name="codeBlock"></param> public static void Use(UseServiceDelegateVoid<T> codeBlock) { IClientChannel proxy […]

在Scala中抛出exception,什么是“官方规则”

我遵循Coursera的Scala课程。 我也开始阅读Odersky的Scala书。 我经常听到的是,在函数式语言中抛出exception不是一个好主意,因为它打破了控制stream程,而且我们通常会返回一个带有失败或成功的exception。 Scala 2.10似乎也会提供这个方向的Try。 但是在这本书和课程中,马丁·奥德斯基(Martin Odersky)似乎并没有(至less现在)说exception是不好的,他用了很多。 我也注意到方法断言/要求… 最后,我有点困惑,因为我想遵循最佳做法,但他们不清楚,语言似乎在双向… 有人可以解释我应该在哪种情况下使用?

在JNI代码中抛出exception的最佳方法是什么?

我想要一个一致的和简单的方法来在JNI代码中抛出exception; 处理链式exception的东西(隐式地从env-> ExceptionOccurred方法中,或者通过参数显式的,无论哪种方式都是好的),并且每当我想要这样做的时候,我都省去了查找构造器。 以上所有都是用C语言编写的,尽pipe我可以根据需要从C ++翻译它。 有没有人有这样的东西,他们可以分享?

Python“提高”用法

在Python中raise和raise from什么区别? try: raise ValueError except Exception as e: raise IndexError 这产生了 Traceback (most recent call last): File "tmp.py", line 2, in <module> raise ValueError ValueError During handling of the above exception, another exception occurred: Traceback (most recent call last): File "tmp.py", line 4, in <module> raise IndexError IndexError 和 try: raise ValueError except Exception […]

validation数据时抛出exception是好的还是坏的想法?

在validation数据的时候,我养成了以下的习惯 *注:我没有真正有每个检查个人布尔值。 这仅仅是例子。 *另一个注意:在testing过程中的任何error handling都正确完成。 在try-catch中引发的唯一例外是我自己的。 Try { if(validCheckOne = false) { throw new Exception("Check one is bad"); } if(validCheckTwo = false) { throw new Exception("Fail'D because of check2"); } if(validCheckTen = false) { throw new Exception("Yet another failure on your part: check10."); } } catch(Exception e) { MessageBox.Show("Your stupid data is wrong! See for […]

你真的需要“最后”的块吗?

有3个排列的try … catch … finally在java中阻塞。 试着抓 尝试…赶上…终于 尝试……终于 一旦finally块被执行,控制权就会在finally块之后的下一行。 如果我删除了finally块,并将其所有的语句移动到try … catch块之后,那么和finally块中的它们有相同的效果吗?