使用XCTest,测试执行以下操作:
XCTAssertThrowsSpecificNamed([does something that breaks], NSException, NSInvalidArgumentException);
我不希望调试器停止在我知道会发生的NSException上但是我希望它仍然停止可能发生的其他异常。
答案 0 :(得分:0)
基本上我们没有选择权。我仍然认为它是一个xCode错误,因为你已经告诉xCode会抛出一个异常,它将是什么异常。为什么要提供XCTAssertThrows,如果它不是"期待"? 显然,它是你所期望的异常,@ nhgrif认为应该是一个错误,而不是例外。可能是一个好点,但如果这种情况发生,我确实希望我的程序崩溃,因为我无法处理它。
所以真正的问题是更多为什么不禁用该异常的调试器呢?可能是因为他们还没有得到它。我建议向Apple提出错误/功能请求。我喜欢有人在此反驳我(请评论!)但在那之前,我会遇到这个问题(在运行我的所有测试时禁用调试器)。
- > https://stackoverflow.com/a/22393643/1701430
"为什么在抛出执行时测试会停止?" 因为你有一个断点,它会停止执行。
"为什么在删除断点后,我的应用程序在抛出异常时会崩溃?" 因为你有一个未处理的异常。未处理的异常会导致程序崩溃。
"我如何处理异常,以免它导致程序崩溃?" 这个问题的简单答案就是不要抛出异常。在其他编程语言中,如Java,这是完全标准的。但是在Objective-C中,我们并没有真正做到例外。在Objective-C中,应该为TRULY异常行为保存例外。
话虽如此,并强烈建议您找到另一种方法来处理您正在尝试处理的任何内容,这就是您在Objective-C中处理异常的方法:
@try {
// code that could throw an exception
}
@catch (NSException *e) {
// handle the exception...
}
@finally {
// post try-catch code, executed every time
}