Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## unreleased

- feat: Use error domain and code for event message #750
- feat: Replace passing nullable Scope with overloads #743 !Breaking
- feat: Remove SDK frames when attaching stacktrace #739
- fix: captureException crates a event type=error #746
Expand Down
2 changes: 1 addition & 1 deletion Samples/iOS-ObjectiveC/iOS-ObjectiveC/ViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ - (IBAction)captureMessage:(id)sender
- (IBAction)captureError:(id)sender
{
NSError *error =
[[NSError alloc] initWithDomain:@""
[[NSError alloc] initWithDomain:@"SampleErrorDomain"
code:0
userInfo:@{ NSLocalizedDescriptionKey : @"Object does not exist" }];
[SentrySDK captureError:error
Expand Down
3 changes: 2 additions & 1 deletion Samples/iOS-Swift/iOS-Swift/ViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ class ViewController: UIViewController {
}

@IBAction func captureError(_ sender: Any) {
let error = NSError(domain: "", code: 0, userInfo: [NSLocalizedDescriptionKey: "Object does not exist"])
let error = NSError(domain: "SampleErrorDomain", code: 1, userInfo: [NSLocalizedDescriptionKey: "Object does not exist"])

SentrySDK.capture(error: error) { (scope) in
// Changes in here will only be captured for this event
// The scope in this callback is a clone of the current scope
Expand Down
2 changes: 1 addition & 1 deletion Samples/tvOS-Swift/tvOS-Swift/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ struct ContentView: View {
}

var captureErrorAction: () -> Void = {
let error = NSError(domain: "", code: 0, userInfo: [NSLocalizedDescriptionKey: "Object does not exist"])
let error = NSError(domain: "SampleErrorDomain", code: 1, userInfo: [NSLocalizedDescriptionKey: "Object does not exist"])
SentrySDK.capture(error: error) { (scope) in
scope.setTag(value: "value", key: "myTag")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ struct ContentView: View {
}

var captureErrorAction: () -> Void = {
let error = NSError(domain: "", code: 0, userInfo: [NSLocalizedDescriptionKey: "Object does not exist"])
let error = NSError(domain: "SampleErrorDomain", code: 1, userInfo: [NSLocalizedDescriptionKey: "Object does not exist"])
SentrySDK.capture(error: error) { (scope) in
scope.setTag(value: "value", key: "myTag")
}
Expand Down
2 changes: 1 addition & 1 deletion Sources/Sentry/SentryClient.m
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ - (SentryId *)captureError:(NSError *)error
- (SentryEvent *)buildErrorEvent:(NSError *)error
{
SentryEvent *event = [[SentryEvent alloc] initWithLevel:kSentryLevelError];
event.message = error.localizedDescription;
event.message = [NSString stringWithFormat:@"%@ %ld", error.domain, (long)error.code];
[self setUserInfo:error.userInfo withEvent:event];
return event;
}
Expand Down
20 changes: 18 additions & 2 deletions Tests/SentryTests/SentryClientTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class SentryClientTest: XCTestCase {
}
}

private let error = NSError(domain: "domain", code: 0, userInfo: [NSLocalizedDescriptionKey: "Object does not exist"])
private let error = NSError(domain: "domain", code: -20, userInfo: [NSLocalizedDescriptionKey: "Object does not exist"])

private let exception = NSException(name: NSExceptionName("My Custom exception"), reason: "User clicked the button", userInfo: nil)

Expand Down Expand Up @@ -213,6 +213,16 @@ class SentryClientTest: XCTestCase {
}
}

func testCaptureErrorWithEnum() {
let eventId = fixture.getSut().capture(error: TestError.invalidTest)

eventId.assertIsNotEmpty()
let error = TestError.invalidTest as NSError
assertLastSentEvent { actual in
XCTAssertEqual("\(error.domain) \(error.code)", actual.message)
}
}

func testCaptureErrorWithSession() {
let eventId = fixture.getSut().captureError(error, with: fixture.session, with: Scope())

Expand Down Expand Up @@ -495,7 +505,7 @@ class SentryClientTest: XCTestCase {

private func assertValidErrorEvent(_ event: Event) {
XCTAssertEqual(SentryLevel.error, event.level)
XCTAssertEqual(error.localizedDescription, event.message)
XCTAssertEqual("\(error.domain) \(error.code)", event.message)
assertValidDebugMeta(actual: event.debugMeta)
assertValidThreads(actual: event.threads)
}
Expand Down Expand Up @@ -554,4 +564,10 @@ class SentryClientTest: XCTestCase {
XCTAssertEqual(0, fixture.transport.sentEventsWithSession.count)
XCTAssertEqual(0, fixture.transport.sentEvents.count)
}

private enum TestError : Error {
case invalidTest
case testIsFailing
case somethingElse
}
}