Zastępowanie domyślnych komunikatów o błędach
Możesz ukryć domyślne komunikaty o błędach osadzonej analizy usługi Power BI w raportach, a zamiast tego wyświetlać niestandardowe komunikaty o błędach pasujące do projektu aplikacji.
Możesz na przykład zastąpić to domyślne okno dialogowe błędu:
W tym niestandardowym oknie dialogowym błędu:
Jak zastąpić błędy
Aby użyć niestandardowych komunikatów o błędach, najpierw ukryj domyślne komunikaty o błędach osadzonej analizy usługi Power BI, ustawiając właściwość hideErrors na true
w obiekcie konfiguracji osadzonej analizy usługi Power BI. Ta konfiguracja powerbi.embed(element, config)
zawiera również inne ustawienia i opcje. Aby uzyskać więcej informacji, zobacz Konfigurowanie ustawień raportu.
let config = {
type: 'report',
tokenType: models.TokenType.Embed,
accessToken: accessToken,
embedUrl: embedUrl,
id: embedReportId,
permissions: permissions,
settings: {
hideErrors: true
}
};
Po ukryciu domyślnych komunikatów o błędach okna dialogowe błędów i komunikaty nie będą już wyświetlane w przypadku wystąpienia błędów. Aby użytkownicy aplikacji otrzymywali spójne i przydatne odpowiedzi w przypadku wystąpienia błędów, odpowiadasz za obsługę zdarzeń błędów.
Aby obsłużyć błędy, najpierw uzyskaj błędy, słuchając zdarzenia error
:
report.off("error");
report.on("error", function(event) {
// Handle errors
});
Właściwość level
w interfejsie IError umożliwia określenie typów błędów do obsługi:
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
błędy są najpoważniejszym typem błędu, ponieważ sprawiają, że raport nie odpowiada. Pamiętaj, aby obsługiwać błędy Fatal
, aby uniemożliwić użytkownikom końcowym wyświetlanie nieodpowiadających lub uszkodzonych raportów bez komunikatów o błędach.
Przykład
Poniższy przykład kodu pokazuje, jak można zastąpić błędy przez nasłuchiwanie i obsługę zdarzeń error
. W przykładzie nie są wyświetlane funkcje newAccessToken
ani error.detailedMessage
. Zaimplementuj własne funkcje tam, gdzie wskazano.
// 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);
}
});