Debug casting class


id DebugCastCpp(id sourceClass, Class cl)
{
	if (sourceClass != nil)
	{
		if (![sourceClass isKindOfClass: cl])
		{
            NSLog(@"%@", [NSString stringWithFormat: @"The cast is invalid (%@ to %@)", [sourceClass class], cl]);
			@throw [NSException exceptionWithName:@"CastException" reason: [NSString stringWithFormat: @"The cast is invalid (%@ to %@)", [sourceClass class], cl] userInfo:nil];
		}
	}
	
	return sourceClass;
}



Advertisements

Adobe AIR Debugging on Device and Catch Runtime Errors!

Evet yazıdan da anlışacağı gibi geçenlerde bir blog post’da görmüştüm ama ne işime yaracak diye düşündüğümde nasıl bir gaflete kapılıp böyle bir düşündüm anlamıyorum 🙂 Neyse aşağıdaki snippet bize büyük bir iyilik yapıyor, kullanıcı uygulamamızı ya da oyunumuzda bir hata ile karşılaştığında Adobe AIR Runtime bunları kaydetmemize olanak sağlıyor.

Hatayı kaptığımızda bunu istersek server’a gönderebiliriz. Ama benim tavsiyem verilerin daha elle tutulur bir analizini almak istiyorsanız BugSense reporterını kullanmanız daha iyi olacaktır.

// listen for uncaught errors
YOUR_DOCUMENT_CLASS.loaderInfo.uncaughtErrorEvents.addEventListener( UncaughtErrorEvent.UNCAUGHT_ERROR, handleGlobalErrors, false, 0 );
 
private function handleGlobalErrors( e:UncaughtErrorEvent ):void 
{
    // uygulamanın hiç bir hata mesajı vermemesini sağlıyoruz burada
    e.preventDefault();
    e.stopPropagation();
 
    // error değerini alıyoruz
    // burada benim tavsiyem internet bağlantısı varsa cihazda bu verileri saklayıp server-side data olarak göndermek.
    if( e.error is Error ) {
        var error:Error = e.error as Error;
 
        // trace out the info from the error
        trace( error.name );
        trace( error.message );
        trace( error.getStackTrace() );
    }
}