Sdílet prostřednictvím


Přepsání výchozích chybových zpráv

Výchozí chybové zprávy v sestavách můžete skrýt ve vložených analytických možnostech Power BI a místo toho zobrazit vlastní chybové zprávy, které odpovídají návrhu vaší aplikace.

Můžete například nahradit toto výchozí chybové dialogové okno:

Snímek obrazovky s výchozím dialogem chyby vložených analytických možností Power BI

S tímto vlastním dialogem chyby:

Snímek obrazovky zobrazující vlastní dialogové okno s chybou

Přepsání chyb

Pokud chcete použít vlastní chybové zprávy, nejprve skryjte výchozí chybové zprávy analýzy Power BI Embedded tak, že nastavíte vlastnost hideErrors na true v objektu konfigurace analýzy Power BI Embedded. Tato konfigurace pro powerbi.embed(element, config) zahrnuje také další nastavení a možnosti. Další informace najdete v tématu Konfigurace nastavení sestavy.

let config = {
    type: 'report',
    tokenType: models.TokenType.Embed,
    accessToken: accessToken,
    embedUrl: embedUrl,
    id: embedReportId,
    permissions: permissions,
    settings: {
        hideErrors: true
    }
};

Když skryjete výchozí chybové zprávy, chybové dialogy a zprávy se už nezobrazí, pokud dojde k chybám. Aby uživatelé vaší aplikace získali konzistentní a užitečné odpovědi, když dojde k chybám, zodpovídáte za zpracování chybových událostí.

Pokud chcete zpracovat chyby, nejprve se zobrazí chyby nasloucháním události error:

report.off("error");
report.on("error", function(event) {
    // Handle errors
});

Vlastnost level rozhraní IError umožňuje určit typy chyb, které se mají zpracovat:

interface IError {
    message: string;
    detailedMessage?: string;
    errorCode?: string;
    level?: TraceType;
    technicalDetails?: ITechnicalDetails;
}

enum TraceType {
    Information = 0,
    Verbose = 1,
    Warning = 2,
    Error = 3,
    ExpectedError = 4,
    UnexpectedError = 5,
    Fatal = 6,
}

Fatal chyby jsou nejvýraznějším typem chyby, protože sestava nereaguje. Nezapomeňte zpracovat Fatal chyby, aby koncoví uživatelé nemohli reagovat nebo přerušovat sestavy bez zasílání chybových zpráv.

Příklad

Následující příklad kódu ukazuje, jak můžete přepsat chyby nasloucháním a zpracováním error událostí. Příklad nezobrazuje funkce newAccessToken ani error.detailedMessage. Implementujte vlastní funkce tam, kde je uvedeno.

// Embed the loadConfiguration that hides the default errors.
let config = {
    type: 'report',
    tokenType: models.TokenType.Embed,
    accessToken: accessToken,
    embedUrl: embedUrl,
    id: embedReportId,
    permissions: permissions,
    settings: {
        hideErrors: true
    }
};

// Get a reference to the embedded report HTML element.
let embedContainer = $('#embedContainer')[0];

// Embed the report and display it within the div container.
let report = powerbi.embed(embedContainer, config);

// Set report.off to remove any pre-existing error event handler.
report.off("error");

// Set report.on to add the new error event handler.
report.on("error", function(event) {
    const error = event.detail;

    // If the error level isn't Fatal, log the error and continue.
    if (error.level !== models.TraceType.Fatal) {
        console.error(error);
        return;
    }

    // If the Fatal error is TokenExpired, refresh the token.
    if (error.message === models.CommonErrorCode.TokenExpired) {
        // Implement your own function here.
        let newAccessToken = refreshToken();
        
        // Set the new access token.
        report.setAccessToken(newAccessToken);
    } else {
        // If the error isn't TokenExpired, show the custom
        // dialog with detailed error message in the iframe.
        // Implement your own function here.
        showError(error.detailedMessage);
    }
});