Skip to content

Commit 745c7a4

Browse files
authored
feat: update errorHandler to support the same classes as in Swift. (#236)
1 parent d37d2d3 commit 745c7a4

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

core/src/main/java/com/segment/analytics/kotlin/core/Errors.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,26 @@
11
package com.segment.analytics.kotlin.core
22

33
import com.segment.analytics.kotlin.core.platform.plugins.logger.segmentLog
4+
sealed class AnalyticsError(): Throwable() {
5+
data class StorageUnableToCreate(override val message: String?): AnalyticsError()
6+
data class StorageUnableToWrite(override val message: String?): AnalyticsError()
7+
data class StorageUnableToRename(override val message: String?): AnalyticsError()
8+
data class StorageUnableToOpen(override val message: String?): AnalyticsError()
9+
data class StorageUnableToClose(override val message: String?): AnalyticsError()
10+
data class StorageInvalid(override val message: String?): AnalyticsError()
11+
data class StorageUnknown(override val message: String?, override val cause: Throwable?): AnalyticsError()
12+
data class NetworkUnexpectedHTTPCode(override val message: String?): AnalyticsError()
13+
data class NetworkServerLimited(override val message: String?): AnalyticsError()
14+
data class NetworkServerRejected(override val message: String?): AnalyticsError()
15+
data class NetworkUnknown(override val message: String?, override val cause: Throwable?): AnalyticsError()
16+
data class NetworkInvalidData(override val message: String?): AnalyticsError()
17+
data class JsonUnableToSerialize(override val message: String?, override val cause: Throwable?): AnalyticsError()
18+
data class JsonUnableToDeserialize(override val message: String?, override val cause: Throwable?): AnalyticsError()
19+
data class JsonUnknown(override val message: String?, override val cause: Throwable?): AnalyticsError()
20+
data class PluginError(override val message: String?, override val cause: Throwable?): AnalyticsError()
21+
data class EnrichmentError(override val message: String?): AnalyticsError()
22+
data class SettingsFetchError(override val message: String?, override val cause: Throwable?): AnalyticsError()
23+
}
424

525
/**
626
* Reports an internal error to the user-defined error handler.

core/src/main/java/com/segment/analytics/kotlin/core/Settings.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ internal fun Analytics.fetchSettings(
115115
log("Fetched Settings: $settingsString")
116116
LenientJson.decodeFromString(settingsString)
117117
} catch (ex: Exception) {
118-
reportErrorWithMetrics(this, ex, "Failed to fetch settings",
118+
reportErrorWithMetrics(this, AnalyticsError.SettingsFetchError(ex.message, ex), "Failed to fetch settings",
119119
Telemetry.INVOKE_ERROR_METRIC, ex.stackTraceToString()) {
120120
it["error"] = ex.toString()
121121
it["writekey"] = writeKey

0 commit comments

Comments
 (0)