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, em vez disso, mostrar mensagens de erro personalizadas que se ajustem ao 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 hideErrors para no objeto de configuração de análise integrada do Power BI. Essa configuração para powerbi.embed(element, config) também inclui outras configurações e opções. Para obter mais informações, consulte Definir 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 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 no evento error:

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

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

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

Exemplo

O exemplo de código a seguir demonstra como você pode substituir erros ouvindo e tratando eventos de error. O exemplo não mostra as funções newAccessToken ou error.detailedMessage. 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);
    }
});