• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Exception handling
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Exception handling


  • Subject: Re: Exception handling
  • From: Alex Zavatone <email@hidden>
  • Date: Fri, 15 Jun 2018 15:53:08 -0500

Along those lines, here are some approaches we used on iOS to catch exceptions
and to throw exceptions.

- (id)argument {
    if (!_argument) {
        @throw [NSException exceptionWithName:NSInternalInconsistencyException
reason:@"Argument requested has yet to be captured." userInfo:nil];


      if (![HMACData rnc_isEqualInConsistentTime:self.inData]) {
        [self cleanupAndNotifyWithError:
         [NSError errorWithDomain:kRNCryptorErrorDomain
                             code:kRNCryptorHMACMismatch
                         userInfo:[NSDictionary dictionaryWithObject:@"HMAC
Mismatch" /* DNL */

forKey:NSLocalizedDescriptionKey]]];
          return;
      }

We also set NSSetUncaughtExceptionHandler declared in the appDelegate.

    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);

#pragma mark -
#pragma mark Exception Handler

void uncaughtExceptionHandler(NSException *exception) {
    DLog(@"CRASH: %@", exception);
    DLog(@"Stack Trace: %@", [exception callStackSymbols]);
    // Internal error reporting
}


Hope this helps.
- Alex Zavatone

> On Jun 15, 2018, at 1:30 PM, Jens Alfke <email@hidden> wrote:
>
>
>
>> On Jun 14, 2018, at 5:58 PM, Quincey Morris
>> <email@hidden> wrote:
>>
>> as someone already mentioned, NSExceptions can’t successfully cross
>> dylib/framework boundaries.
>
> They can, actually; there is no problem with this at the ABI/runtime level.
>
> I think what you mean is that most libraries/frameworks don't make guarantees
> about properly handling exceptions thrown into them, i.e. from a call into
> external code. Some C++ libraries do guarantee this (especially libc++), and
> even without guarantees a typical C++ lib using RAII will be relatively safe,
> but Objective-C code usually isn't written to be exception-safe, and C code
> of course can't be.
>
> —Jens
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

References: 
 >Re: Exception handling (From: Casey McDermott <email@hidden>)
 >Re: Exception handling (From: Quincey Morris <email@hidden>)
 >Re: Exception handling (From: Jens Alfke <email@hidden>)

  • Prev by Date: Re: Exception handling
  • Next by Date: Re: Exception handling
  • Previous by thread: Re: Exception handling
  • Next by thread: Re: Exception handling
  • Index(es):
    • Date
    • Thread