Is there a way in the Cocoa SDK to report custom errors which didn’t reach the main exception handler - e.g. if a service or API I use returns an NSError
with some failure codes and messages, or I catch a Swift Error
object in a do/try/catch
block? Is client.send(event:)
meant for such use cases? If I pass the NSError
info there and call snapshotStacktrace
, will this be added as an entry on my “Issues” list on sentry.io just like if it was a fatal exception?
Yes, of course, I would take this as guidance
https://docs.sentry.io/clients/cocoa/advanced/#adding-stacktrace-to-message
you can set every property on the event.
You could also create an event without the snapshotStacktrace
method depending on your needs.
Ok, I’ve tried it now - I’m getting a report, but the stack trace isn’t being sent:
Here’s my code:
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Create a Sentry client and start crash handler
do {
Client.shared = try Client(dsn: "...")
try Client.shared?.startCrashHandler()
} catch let error {
print("\(error)")
// Wrong DSN or KSCrash not installed
}
Client.shared?.snapshotStacktrace {
let event = Event(level: .warning)
event.message = "API call failed: incorrect image size"
event.environment = "debug"
Client.shared?.appendStacktrace(to: event)
Client.shared?.send(event: event)
}
}
Sample project: https://www.dropbox.com/s/ettp29nk4xas3ie/SentryEventTest.zip?dl=0
The effect is the same when I log the error from some other place, e.g. after pressing a button, and in an iOS app.
Oh, @mackuba that must be a bug, I will look into this now.
I’ve released 3.7.1
which fixes this error.
Wow, you guys are unbelievable Just tested 3.7.1, looks like it’s working
Hello, I have tried:
SentryEvent* event = [[SentryEvent alloc] initWithLevel:kSentrySeverityFatal];
[event setMessage:[exception reason]];
[SentryClient.sharedClient appendStacktraceToEvent:event];
[SentryClient.sharedClient sendEvent:event withCompletionHandler:nil];
but unfortunately there is no stack trace on the web UI.