Error Handling
Every module in Wagmi Core exports an accompanying error type which you can use to strongly type your catch statements.
These types come in the form of <Module>ErrorType. For example, the getBlockNumber action exports a GetBlockNumberErrorType type.
Unfortunately, TypeScript doesn't have an abstraction for typed exceptions, so the most pragmatic & vanilla approach would be to explicitly cast error types in the catch statement.
tsx
import { type GetBlockNumberErrorType, getBlockNumber } from '@wagmi/core' import { config } from './config' try { const blockNumber = await getBlockNumber(config) } catch (e) { const error = e as GetBlockNumberErrorType error.name // ^? (property) name: "Error" | "ChainDisconnectedError" | "HttpRequestError" | "InternalRpcError" | "InvalidInputRpcError" | "InvalidParamsRpcError" | "InvalidRequestRpcError" | "JsonRpcVersionUnsupportedError" | ... 16 more ... | "WebSocketRequestError" if (error.name === 'InternalRpcError') error.code // ^? (property) code: -32603 if (error.name === 'HttpRequestError') error.headers // ^? (property) headers: Headers error.status // ^? (property) status: number }ts
import { createConfig, http } from '@wagmi/core' import { mainnet, sepolia } from '@wagmi/core/chains' export const config = createConfig({ chains: [mainnet, sepolia], transports: { [mainnet.id]: http(), [sepolia.id]: http(), }, })TIP
If you are using Wagmi Hooks, errors are already strongly typed via the error property.