@@ -34,6 +34,7 @@ import io.modelcontextprotocol.kotlin.sdk.types.ListRootsResult
3434import io.modelcontextprotocol.kotlin.sdk.types.ListToolsRequest
3535import io.modelcontextprotocol.kotlin.sdk.types.ListToolsResult
3636import io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel
37+ import io.modelcontextprotocol.kotlin.sdk.types.McpException
3738import io.modelcontextprotocol.kotlin.sdk.types.Method
3839import io.modelcontextprotocol.kotlin.sdk.types.PingRequest
3940import io.modelcontextprotocol.kotlin.sdk.types.ReadResourceRequest
@@ -54,6 +55,7 @@ import kotlinx.atomicfu.update
5455import kotlinx.collections.immutable.minus
5556import kotlinx.collections.immutable.persistentMapOf
5657import kotlinx.collections.immutable.toPersistentSet
58+ import kotlinx.serialization.SerializationException
5759import kotlinx.serialization.json.JsonObject
5860import kotlin.coroutines.cancellation.CancellationException
5961
@@ -196,11 +198,15 @@ public open class Client(private val clientInfo: Implementation, options: Client
196198 logger.error(error) { " Failed to initialize client: ${error.message} " }
197199 close()
198200
199- if (error !is CancellationException ) {
200- throw IllegalStateException (" Error connecting to transport: ${error.message} " , error)
201- }
201+ when (error) {
202+ is CancellationException ,
203+ is McpException ,
204+ is StreamableHttpError ,
205+ is SerializationException ,
206+ -> throw error
202207
203- throw error
208+ else -> throw IllegalStateException (" Error connecting to transport: ${error.message} " , error)
209+ }
204210 }
205211 }
206212
0 commit comments