标签: nsexception

@try - 在Objective-c中捕获块

为什么@try阻止工作?它崩溃了应用程序,但它应该被@try块捕获.

 NSString* test = [NSString stringWithString:@"ss"];

 @try {
    [test characterAtIndex:6];

 }
 @catch (NSException * e) {
    NSLog(@"Exception: %@", e);
 }
 @finally {
    NSLog(@"finally");
 }
Run Code Online (Sandbox Code Playgroud)

iphone objective-c try-catch-finally nsexception

189
推荐指数
2
解决办法
14万
查看次数

Xcode不显示导致崩溃的行

每次我的应用程序崩溃时,Xcode都会在main()函数中突出显示UIApicationMain()调用,导致崩溃.在某些情况下,以前是正常的(例如分段错误),但我试图处理的崩溃是一个简单的SIGABRT,其中记录了控制台中的详细信息:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: Date)'
Run Code Online (Sandbox Code Playgroud)

Xcode用于显示旧版SDK的正确行,但自从我升级到Xocde 4.2后发生了变化.很明显,Xcode确切地知道导致崩溃的原因(或者可能知道),但它仍然没有显示实际的行.这有什么修复或解决方法吗?

xcode cocoa-touch objective-c nsexception ios

123
推荐指数
3
解决办法
4万
查看次数

在Swift中捕获NSException

Swift中的以下代码引发NSInvalidArgumentException异常:

task = NSTask()
task.launchPath = "/SomeWrongPath"
task.launch()
Run Code Online (Sandbox Code Playgroud)

我该如何捕捉异常?据我所知,Swift中的try/catch是针对Swift中抛出的错误,而不是针对像NSTask这样的对象引发的NSExceptions(我猜这是用ObjC编写的).我是Swift的新手,所以可能是我错过了一些明显的东西......

编辑:这是一个关于bug的雷达(特别是对于NSTask):openradar.appspot.com/22837476

cocoa-touch exception foundation nsexception swift

65
推荐指数
3
解决办法
2万
查看次数

-observeValueForKeyPath:ofObject:change:context:收到消息但未处理

我对KVO比较陌生,所以我很有可能违反了一些基本规则.我正在使用核心数据.

我的应用程序崩溃了以下消息:我无法理解的是为什么CGImage参与观察在MeasurementPointer对象上设置的值.

        *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<CGImage 0x276fc0>: An -observeValueForKeyPath:ofObject:change:context: message was received but not handled.
Key path: measurementDescriptor
Observed object: <MeasurementPointer: 0x8201640> (entity: MeasurementPointer; id: 0x8200410 <x-coredata://EBEE0687-D67D-4B03-8C95-F4C60CFDC20F/MeasurementPointer/p75> ; data: {
    measurementDescriptor = "0x260fd0 <x-coredata://EBEE0687-D67D-4B03-8C95-F4C60CFDC20F/MeasurementDescriptor/p22>";
})
Change: {
    kind = 1;
    new = "<MeasurementDescriptor: 0x262530> (entity: MeasurementDescriptor; id: 0x260fd0 <x-coredata://EBEE0687-D67D-4B03-8C95-F4C60CFDC20F/MeasurementDescriptor/p22> ; data: {\n    measurementName = Temperature;\n    measurementUnits = \"\\U00b0C\";\n    sortString = nil;\n})";
}
Context: 0x0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x30897ed3 …
Run Code Online (Sandbox Code Playgroud)

iphone key-value-observing nsexception

29
推荐指数
2
解决办法
2万
查看次数

iOS崩溃报告"意外启动状态"异常?

我找到了几个崩溃报告的原因unexpected start state.我的代码看起来像这样:

NSRange range = [content rangeOfString:@"<html>"];

if (range.location != NSNotFound) {
    NSString *htmlStr = [content substringFromIndex:range.location];

    NSAttributedString *attStr = [[NSAttributedString alloc] initWithData:[htmlStr dataUsingEncoding:NSUnicodeStringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType} documentAttributes:nil error:nil];

    return attStr.string;
}
Run Code Online (Sandbox Code Playgroud)

崩溃报告如下所示:

在此输入图像描述

crash nsexception ios nsmutableattributedstring

25
推荐指数
2
解决办法
4108
查看次数

如何使用XCTAssertThrowsSpecific

我正在使用XCTest编写Cocoa单元测试,并且最近第一次使用了XCTAssertThrows.这很酷,但我想用XCTAssertThrowsSpecific让它变得更好,并且需要一定的异常.

这是一个示例测试:

-(void)testShortPassword {
    XCTAssertThrows([user storePassword:@"abc"],@"Expect exception for short pw");
}
Run Code Online (Sandbox Code Playgroud)

在我的用户类中,我有以下代码:

-(void)storePassword:(NSString*)password {

    NSCAssert(password.length > 6, @"Password must be longer than 6 characters");

    // go on to store the password on the keychain
}
Run Code Online (Sandbox Code Playgroud)

请记住,Cocoa通常不会使用异常(因此最好返回错误,并在前面的示例中显示UI等).如何以可被捕获的方式抛出异常XCTAssertThrowsSpecific?我如何指定XCTAssertThrowsSpecific(expression, specificException, format...)

unit-testing objective-c nsexception ios xctest

23
推荐指数
1
解决办法
8751
查看次数

使用NSException类型的未捕获异常终止?

单击按钮转到新视图时,我的应用程序崩溃.这出现了:

int main(int argc, char * argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
Run Code Online (Sandbox Code Playgroud)

"return UIApplicationMain ..."以绿色突出显示,最后是"Thread 1:Signal SIGABRT".该错误还包括输出中的:

**Terminating app due to uncaught exception *** 'NSUnknownKeyException reason:'[<SlopeViewController 0x8b68c70> setValue:forUndefinedKey:]: this class is not key value        coding-compliant for the key m.' *** First throw call stack: (0x16b19b8 0x14328b6 0x17407c1   0x10f00ee 0x105c7db 0x105bd33 0x10be069 0x4b579b 0x14447d2 0x16acf5a 0x4b42f4 0x336e79 0x337491  0x337792 0x337c98 0x345912 0x345c5a 0x5aca79 0x34279a 0x3429a0 0x3429e0 0x73dd2b 0x72e181 0x72e1fc  0x1444874 0x2343b7 0x234343 0x32027e 0x320641 0x31f8fd …
Run Code Online (Sandbox Code Playgroud)

objective-c nsexception

20
推荐指数
1
解决办法
8万
查看次数

如何在XCode控制台中通过十六进制查找实例?

当我的iPhone应用程序崩溃后,当我调出控制台时,它经常会说"无法识别的选择器发送到实例0x等等等等." 我怎样才能找出这是什么变量?调试器中有没有办法?它甚至可能吗?谢谢.

iphone xcode nsexception

16
推荐指数
2
解决办法
6496
查看次数

如何在Swift 2.0中正确处理NSFileHandle异常?

首先,我是iOS和Swift的新手,来自Android/Java编程背景.因此,对于我来说,尝试写入文件时捕获异常的想法是第二天性,如果缺少空间,文件权限问题或文件中可能发生的任何其他事情(根据我的经验,已发生) .我也明白,在Swift中,异常与Android/Java不同,所以这不是我在这里要求的.

我试图使用NSFileHandle附加到一个文件,如下所示:

let fileHandle: NSFileHandle? = NSFileHandle(forUpdatingAtPath: filename)
if fileHandle == nil {
    //print message showing failure
} else {
    let fileString = "print me to file"
    let data = fileString.dataUsingEncoding(NSUTF8StringEncoding)
    fileHandle?.seekToEndOfFile() 
    fileHandle?.writeData(data!)
}
Run Code Online (Sandbox Code Playgroud)

但是,函数seekToEndOfFile()writeData()函数都表明它们会抛出某种异常:

如果文件描述符已关闭或无效,如果接收器表示未连接的管道或套接字端点,文件系统上没有剩余空闲空间,或者发生任何其他写入错误,则此方法引发异常. - Apple文档writeData()

那么在Swift 2.0中处理这个问题的正确方法是什么?我读过的联系 斯威夫特语言错误处理,的try-catch斯威夫特例外,NSFileHandle写数据:异常处理,雨燕2.0的异常处理,以及如何捕捉在斯威夫特的例外,但他们都没有直接回答我的问题.我确实读过一些关于在Swift代码中使用objective-C的东西,但由于我是iOS新手,我不知道这个方法是什么,似乎无法在任何地方找到它.我还尝试了新的Swift 2.0 do-catch块,但他们没有意识到NSFileHandle方法会抛出任何类型的错误,很可能因为函数文档没有throw关键字.

我知道我可以让应用程序崩溃,如果它用完了空间或其他什么,但由于应用程序可能会在以后发布到应用商店,我不希望这样.那么我如何以Swift 2.0的方式做到这一点呢?

编辑: 这个目前只是一个只有Swift代码的项目,所以即使看起来有一种方法可以在Objective-C中做到这一点,我也不知道如何将两者混合在一起.

nsexception nsfilehandle ios swift swift2

16
推荐指数
1
解决办法
5174
查看次数

NSException和NSError自定义异常/错误

我最近开始学习Objective-C,我正在开发一个iOS应用程序作为练习,无论如何,我想通过抛出异常来处理溢出(我来自Java背景),我只搜索引用NSException,但后来我阅读有关异常处理主题的部分,他们说要使用NSError,我读了参考但他们有相同的协议和方法,那么它们之间的区别是什么?哪个更好?

另外,我想创建自己的异常或错误类,是否应该包含任何方法或字段?(就像Exception在Java中实现接口时一样).谢谢

exception objective-c nserror nsexception

12
推荐指数
1
解决办法
8290
查看次数