異常界面處理渲染

新增異常界面的目的是為了防止在使用界面時因為拋出異常而導致原有界面失效。因此,界面在拋出異常後將會跳轉到異常界面並以界面的形式顯示拋出的錯誤訊息。如果你有使用過 Web Server 的經驗的話,那就相當於在 500 錯誤 之後所拋出的錯誤頁面。

以下是本框架內置的默認異常錯誤界面:

@ViewDescriptor(
        name = "Error Encountered",
        rows = 1,
        patterns = {"ZZZZAZZZZ"},
        cancelMove = {'A', 'Z'}
)
public class StaticErrorView implements View<Exception> { // 以 Exception 為數據模型

    @Override
    public void renderView(Exception ex, UIContext context) {
        ButtonFactory button = context.factory(ButtonFactory.class);

        context
                .pattern('Z')
                .fill(button.icon(Material.BLACK_STAINED_GLASS_PANE).create())
                .and() // 完成設置一個 pattern 後返回
                .pattern('A')
                .components(
                        button.icon(Material.BARRIER)
                                .title("&cError: " + ex.getClass().getSimpleName()) // 顯示異常類名稱
                                .lore("&c".concat(ex.getMessage())) // 顯示異常訊息
                                .create()
                );
    }
}

要使拋出錯誤後跳轉到這個界面,需要一個 異常界面處理器 控制跳轉。

如果要在處理指定的異常時跳轉到指定的界面,則可以新增自定義方法並標註 @HandleException

設置為全局異常處理器

只需要調用 MVCInstallation 註冊即可。設置全局處理器將使所有界面插件所拋出的錯誤經由你的處理器去處理。

設置為插件內的異常處理器

要設置為 Plugin Scoped (插件內的異常處理器), 則使用 addExceptionViewHandlers 方法而非全局即可。

設置為指定 Controller 的異常處理器

其註冊方式與上述相同,只需要在 你的異常處理器上 標註 @HandleForControllers 即可。

最后更新于

这有帮助吗?