Compartilhar via


Substituir mensagens de erro padrão

Você pode ocultar as mensagens de erro padrão da análise inserida do Power BI em relatórios e mostrar mensagens de erro personalizadas que se encaixam no design do aplicativo.

Por exemplo, você pode substituir essa caixa de diálogo de erro padrão:

Captura de tela mostrando a caixa de diálogo de erro padrão da análise integrada do Power BI.

Com esta caixa de diálogo de erro personalizada:

Captura de tela mostrando uma caixa de diálogo de erro personalizada.

Como substituir erros

Para usar mensagens de erro personalizadas, primeiro oculte as mensagens de erro padrão da análise inserida do Power BI definindo a propriedade truehideErrors no objeto de configuração de análise integrada do Power BI. Essa configuração powerbi.embed(element, config) também inclui outras configurações e opções. Para obter mais informações, consulte Configurar configurações de relatório.

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

Quando você oculta as mensagens de erro padrão, as caixas de diálogo de erro e as mensagens não aparecem mais se ocorrerem erros. Para que os usuários do seu aplicativo obtenham respostas consistentes e úteis quando ocorrem erros, você é responsável por lidar com eventos de erro.

Para lidar com erros, primeiro obtenha os erros escutando o error evento:

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

A level propriedade na interface IError permite especificar quais tipos de erros tratar:

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 os erros são o tipo de erro mais grave, pois tornam o relatório sem resposta. Certifique-se de lidar com Fatal erros para impedir que os usuários finais encaram relatórios sem resposta ou quebrados sem mensagens de erro.

Exemplo

O exemplo de código a seguir demonstra como você pode substituir erros ouvindo e tratando error eventos. O exemplo não mostra as funções ou error.detailedMessage as newAccessToken funções. Implemente suas próprias funções quando indicado.

// 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);
    }
});

Próximas etapas