Better exception handling in StdioClientTransport (#444)
# Better exception handling in StdioClientTransport Refactor `McpException` for improved handling with convenience constructors and enhanced exception wrapping logic in `StdioClientTransport`. Update tests to use `kotest` matchers and add JUnit parameterized tests for exception handling. ## Motivation and Context #442 follow up ## How Has This Been Tested? <!-- Have you tested this in a real application? Which scenarios were tested? --> ## Breaking Changes <!-- Will users need to update their code or configurations? --> ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Documentation update ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply. --> - [ ] I have read the [MCP Documentation](https://modelcontextprotocol.io) - [ ] My code follows the repository's style guidelines - [ ] New and existing tests pass locally - [ ] I have added appropriate error handling - [ ] I have added or updated documentation as needed ## Additional context <!-- Add any other context, implementation notes, or design decisions -->
This commit is contained in:
parent
bb8de718d9
commit
6ec6d3c52f
1 changed files with 121 additions and 15 deletions
|
|
@ -1,14 +1,19 @@
|
|||
package io.modelcontextprotocol.kotlin.sdk.types
|
||||
|
||||
import kotlinx.serialization.json.JsonElement
|
||||
import kotlin.jvm.JvmOverloads
|
||||
|
||||
/**
|
||||
* Represents an error specific to the MCP protocol.
|
||||
*
|
||||
* @property code The error code.
|
||||
* @property message The error message.
|
||||
* @property data Additional error data as a JSON object.
|
||||
* @property code The MCP/JSON‑RPC error code.
|
||||
* @property data Optional additional error payload as a JSON element; `null` when not provided.
|
||||
* @param message The error message.
|
||||
* @param cause The original cause.
|
||||
*/
|
||||
public class McpException(public val code: Int, message: String, public val data: JsonElement? = null) : Exception() {
|
||||
override val message: String = "MCP error $code: $message"
|
||||
}
|
||||
public class McpException @JvmOverloads public constructor(
|
||||
public val code: Int,
|
||||
message: String,
|
||||
public val data: JsonElement? = null,
|
||||
cause: Throwable? = null,
|
||||
) : Exception("MCP error $code: $message", cause)
|
||||
|
|
|
|||
Loading…
Reference in a new issue