001package com.ericlam.mc.eldgui.exception;
002
003import com.ericlam.mc.eldgui.UISession;
004import com.ericlam.mc.eldgui.view.BukkitView;
005import org.bukkit.entity.Player;
006
007/**
008 * 異常界面處理器。當界面執行時出現異常,將會調用這個類去渲染異常界面。
009 * <br>
010 * 你可以透過新增自定義方法並標注 {@link HandleException}
011 * 來特別處理指定的異常,但其方法參數必須與
012 * {@link ExceptionViewHandler#createErrorView(Exception, String, UISession, Player)}
013 * 一致
014 */
015public interface ExceptionViewHandler {
016
017    /**
018     * 全局異常處理。如無指定,則調用此方法處理異常
019     * @param exception 異常(報錯)
020     * @param fromController 獲取抛出異常的 controller id
021     * @param session Session
022     * @param player 獲取抛出異常的所屬界面使用者
023     * @return 報錯時出現的界面
024     */
025    BukkitView<?, ?> createErrorView(Exception exception, String fromController, UISession session, Player player);
026
027}