Zum Inhalt springen

SDK: Fehler

Als Markdown ansehen

Jeder fehlgeschlagene Aufruf lehnt mit einem PithyxError ab. Probleme des Daemons kommen unverändert durch; die Codes sdk.* stammen aus der Verbindung zwischen App und Desktop. Jeder Code steht in der Fehlerreferenz.

Beim Build aus den TSDoc-Kommentaren von @pithyx/sdk 1.0.0-rc.9 erzeugt; der Text unter den Überschriften ist der Kommentar im Quelltext und bleibt Englisch.

The error every failed SDK call rejects with. It carries the problem’s fields, so an app branches on code and translates it itself; message is the English detail, or the code when there is none.

try {
await app.storage.set('draft', draft);
} catch (error) {
if (error instanceof PithyxError && error.code === 'app.storage.too_large') {
showTooLarge();
} else {
await app.ui.showError(error);
}
}
  • Error
new PithyxError(problem): PithyxError;

An error from a problem, as the SDK builds it from a desktop or daemon answer.

Parameter Typ Beschreibung
problem Problem The problem’s code, params, detail and request id.

PithyxError

Error.constructor;
readonly code: string;

Stable code, area.object.reason, for example fs.entry.not_found.

Problem.code

readonly params: Record<string, unknown>;

Values for the translated message, for example { permission: 'files.read' }.

Problem.params

readonly optional detail?: string;

English fallback text.

Problem.detail

readonly optional requestId?: string;

The request id for support, when the daemon was involved.

Problem.requestId

toProblem(): Problem;

The plain problem, for sending it over a transport.

Problem

The problem without the Error parts.

A problem as it travels between desktop and app: RFC 9457 fields the Pithyx API uses.

code: string;

Stable code, area.object.reason.

params: Record<string, unknown>;

Values for the translated message.

optional detail?: string;

English fallback text.

optional requestId?: string;

The request id for support, when the daemon was involved.

type SdkErrorCode = (typeof sdkErrorCodes)[number];

A code of the SDK’s own transport errors, translated under errors.sdk.*.

const sdkErrorCodes: readonly [
'sdk.method.unknown',
'sdk.request.invalid',
'sdk.request.timeout',
'sdk.transport.closed',
'sdk.protocol.unsupported',
'sdk.transfer.cancelled',
'sdk.backend.endpoint_unknown',
'sdk.backend.unreachable',
];

Codes the SDK itself can produce. Codes of the daemon API come through unchanged and are strings as well.

function isProblem(value): value is Problem;

Whether a value has the shape of a problem (RFC 9457 fields code and params).

Parameter Typ Beschreibung
value unknown Anything, for example a caught error or a parsed response body.

value is Problem

Whether value.code is a string and value.params an object.