Error Handling
Every module in viem 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.
example.ts
import { type GetBlockNumberErrorType } from 'viem'
import { client } from './client'
try {
const blockNumber = await client.getBlockNumber()
} catch (e) {
const error = e as GetBlockNumberErrorType
error.ResourceNotFoundRpcError.name: stringname
if (error.name === 'InternalRpcError')
error.code: -32603 | -32001code
if (error.name === 'HttpRequestError') {
error.anyheaders
error.anystatus
}
}