我是Objective-c的新手,并且创建了一个自定义异常。我想在implementationC的functin1()中处理异常(抛出function3())。这是我的代码:
@implementatin A
function3()
{
if(contion)
throw [[ApiException alloc] initwithName:@"", reasong:@"" userInfo:nil];
}
@implementatin B
function2()
{
function3();
}
@implementatin C
function1()
{
function2();
}
答案 0 :(得分:1)
您可以通过捕获并重新抛出异常来传播异常:
@try {
[self doSomethingElse:anArray];
}
@catch (NSException *theException) {
@throw;
}
但是,您需要知道Objective-C异常与C ++异常不同,如果不小心使用,可能会导致泄漏。他们的使用可能是一个坏主意。确保您正确阅读了Apple的Exception Programming Guide。
答案 1 :(得分:1)
显然你对Objective-C很新:没有函数,只有方法。所以我的第一个建议是获得一本书或教程。
除此之外:您是否知道在Objective-C异常中不是处理错误的首选? https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Exceptions/Exceptions.html
其中一个原因是,ARC不适用于开箱即用的例外情况。 (您必须打开异常处理,这会导致运行时损失。)
问答:通常,您使用NSException
创建例外,并将其与@throw
一起投放。你有通常的try-catch-finally rethrow模式来处理它们:
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Exceptions/Tasks/HandlingExceptions.html#//apple_ref/doc/uid/20000059-BBCHGJIJ
@try
{
// something that can throw an exception
}
@catch (…)
{
// catch it here
@throw; // rethrow the catched exception.
}