Skip to content

Error Handling

Feedsmith provides dedicated error types for different failure scenarios during parsing.

Error Types

DetectError

Thrown when the input doesn't match the expected feed format. This happens before any parsing is attempted.

typescript
import { parseRssFeed, DetectError } from 'feedsmith'

try {
  parseRssFeed('<feed>not rss</feed>')
} catch (error) {
  if (error instanceof DetectError) {
    console.log(error.message) // "Invalid feed format"
  }
}

MalformedError

Thrown when the content is malformed and the underlying parser fails (e.g., invalid XML).

typescript
import { parseRssFeed, MalformedError } from 'feedsmith'

try {
  parseRssFeed('<rss version="2.0"><channel><title>Test</title</channel></rss>')
} catch (error) {
  if (error instanceof MalformedError) {
    console.log(error.message) // "Invalid feed format"
  }
}

ParseError

Thrown when the content is syntactically valid but produces an empty or invalid result.

typescript
import { parseRssFeed, ParseError } from 'feedsmith'

try {
  parseRssFeed('<rss version="2.0"></rss>')
} catch (error) {
  if (error instanceof ParseError) {
    console.log(error.message) // "Invalid feed format"
  }
}

Universal Parser

The universal parseFeed function throws the same error types:

typescript
import { parseFeed, DetectError, MalformedError, ParseError } from 'feedsmith'

try {
  parseFeed('<not-a-feed></not-a-feed>')
} catch (error) {
  if (error instanceof DetectError) {
    // Unrecognized feed format.
  } else if (error instanceof MalformedError) {
    // Malformed XML.
  } else if (error instanceof ParseError) {
    // Valid XML but invalid feed structure.
  }
}

Error Hierarchy

All error classes extend the built-in Error, so instanceof Error checks work as expected. This can be useful for catching any parsing error alongside other errors in a single handler:

typescript
import { parseFeed, DetectError, MalformedError, ParseError } from 'feedsmith'

try {
  parseFeed(input)
} catch (error) {
  if (error instanceof DetectError) {
    // Unrecognized feed format.
  } else if (error instanceof MalformedError) {
    // Malformed XML.
  } else if (error instanceof ParseError) {
    // Valid XML but invalid feed structure.
  } else if (error instanceof Error) {
    // Any other error.
  }
}