Errors
All package exceptions implement CodeDiffExceptionInterface. Catch a precise
exception when the application has a recovery path, or use the shared interface
at a request, job, or command boundary.
| Exception | Cause | Recovery |
|---|---|---|
SizeLimitException |
Comparison or patch input exceeds maxBytes |
Compare smaller meaningful units, or deliberately raise the limit after reviewing memory and execution time |
BinaryInputException |
Text input contains binary indicators, or a patch contains binary file markers | Decode the content to an appropriate textual representation, or use a binary comparison tool |
ParseException |
A unified patch has an invalid header, hunk count, edit line, or newline marker | Obtain the complete patch and preserve its headers and hunk counts rather than guessing missing lines |
PatchApplyException |
A patch contains several files for apply(), a path is missing, or a hunk does not match |
Use applyBundle() for several files, verify the source revision and path map, then inspect hunkIndex |
Comparison limits
Diff::compare() validates both strings before an engine computes changes.
Binary detection checks null bytes and excessive control characters near the
beginning of the input. Retrying the same bytes with a larger size limit does
not make binary content valid text.
contextLines() rejects negative values and Diff::maxBytes() rejects
non-positive values. These configuration errors raise InvalidArgumentException
and should be fixed before processing user input.
Patch recovery
PatchApplyException::hunkIndex identifies the zero-based hunk that failed.
Fuzz searches nearby line positions; it does not ignore changed content and is
not conflict resolution. If a patch targets another revision, regenerate it
against the intended base or let the application present a conflict workflow.
For multi-file patches, every required old path must exist in the input
path => content map. Keep the returned map separate until the application has
decided how to persist it. Alto Code Diff never writes files or invokes Git.