原文連接:http://www.javaspecialists.eu/archive/Issue129.htmlhtml
今天看到play的客戶端渲染方法很特別: java
/** * Render a 200 OK application/json response * @param jsonString The JSON string */ protected static void renderJSON(String jsonString) { throw new RenderJson(jsonString); }
怎麼渲染是直接拋出一個異常呢?spring
查了一下才發現原來是用的服務器端直接拋出「實體異常」(這種可能不能叫一場了),由客戶端渲染器進行捕獲再進行渲染(這種形式不知道比spring的渲染器效率是否高一點)。json
這種思路好像頗有意思,因爲正常的異常要填充stack trace,因此手動寫了一個FastRuntimeException把填充方法fillInStackTrace給覆寫了。服務器
同時,我也在stackoverflow上請教了一下:http://stackoverflow.com/questions/8500739/why-play-framework-simply-throw-a-new-render-in-controller-classapp
有興趣的能夠深刻研究一下。spa