new style exception reporting

This commit is contained in:
Andrew Dolgov 2009-01-23 18:19:17 +01:00
parent e8a429e3f8
commit 273d1e293e
6 changed files with 103 additions and 123 deletions

View file

@ -16,40 +16,41 @@ function is_opera() {
return window.opera;
}
function exception_error_ext(location, e, ext_info) {
function exception_error(location, e, ext_info) {
var msg = format_exception_error(location, e);
var ebc = document.getElementById("xebContent");
disableHotkeys();
if (ebc) {
try {
Element.show("dialog_overlay");
Element.show("extendedErrorBox");
if (ext_info) {
if (ext_info.responseText) {
ext_info = ext_info.responseText;
var ebc = document.getElementById("xebContent");
if (ebc) {
Element.show("dialog_overlay");
Element.show("errorBoxShadow");
if (ext_info) {
if (ext_info.responseText) {
ext_info = ext_info.responseText;
}
}
ebc.innerHTML =
"<div><b>Error message:</b></div>" +
"<pre>" + msg + "</pre>" +
"<div><b>Additional information:</b></div>" +
"<textarea readonly=\"1\">" + ext_info + "</textarea>";
} else {
alert(msg);
}
ebc.innerHTML =
"<div><b>Error message:</b></div>" +
"<pre>" + msg + "</pre>" +
"<div><b>Additional information:</b></div>" +
"<textarea readonly=\"1\">" + ext_info + "</textarea>";
} else {
} catch (e) {
alert(msg);
}
}
function exception_error(location, e, silent) {
var msg = format_exception_error(location, e);
if (!silent) {
alert(msg);
}
}
function format_exception_error(location, e) {
@ -647,7 +648,7 @@ function all_counters_callback2(transport, async_call) {
debug("<b>all_counters_callback2 OUT: " + transport + "</b>");
} catch (e) {
exception_error("all_counters_callback2", e);
exception_error("all_counters_callback2", e, transport);
}
}
@ -655,7 +656,6 @@ function get_feed_unread(id) {
try {
return parseInt(document.getElementById("FEEDU-" + id).innerHTML);
} catch (e) {
exception_error("get_feed_unread", e, true);
return -1;
}
}
@ -667,7 +667,6 @@ function get_cat_unread(id) {
ctr = ctr.replace(")", "");
return parseInt(ctr);
} catch (e) {
exception_error("get_feed_unread", e, true);
return -1;
}
}
@ -1280,10 +1279,9 @@ function leading_zero(p) {
function closeErrorBox() {
if (Element.visible("extendedErrorBox")) {
if (Element.visible("errorBoxShadow")) {
Element.hide("dialog_overlay");
Element.hide("extendedErrorBox");
Element.hide("errorBoxShadow");
enableHotkeys();
}
@ -1507,7 +1505,7 @@ function storeInitParam(key, value) {
init_params[key] = value;
}
function fatalError(code, message) {
function fatalError(code, msg, ext_info) {
try {
if (code == 6) {
@ -1515,14 +1513,29 @@ function fatalError(code, message) {
} else if (code == 5) {
window.location.href = "update.php";
} else {
var fe = document.getElementById("fatal_error");
var fc = document.getElementById("fatal_error_msg");
if (message == "") message = "Unknown error";
if (msg == "") msg = "Unknown error";
fc.innerHTML = "<img src='images/sign_excl.gif'> " + message + " (Code " + code + ")";
var ebc = document.getElementById("xebContent");
fe.style.display = "block";
if (ebc) {
Element.show("dialog_overlay");
Element.show("errorBoxShadow");
Element.hide("xebBtn");
if (ext_info) {
if (ext_info.responseText) {
ext_info = ext_info.responseText;
}
}
ebc.innerHTML =
"<div><b>Error message:</b></div>" +
"<pre>" + msg + "</pre>" +
"<div><b>Additional information:</b></div>" +
"<textarea readonly=\"1\">" + ext_info + "</textarea>";
}
}
} catch (e) {

View file

@ -78,7 +78,6 @@
</div>
</div>
<div id="hotkey_help_overlay" style="display : none" onclick="Element.hide(this)">
<?php rounded_table_start("hho"); ?>
<?php include "help/4.php" ?>
@ -96,11 +95,6 @@ window.onload = init;
<ul id="debug_output" style='display : none'><li>&nbsp;</li></ul>
<div id="fatal_error"><div id="fatal_error_inner">
<h1>Fatal Error</h1>
<div id="fatal_error_msg"><?php echo __('Unknown Error') ?></div>
</div></div>
<div id="prefHeader">
<div class="topLinks">
<?php if (!SINGLE_USER_MODE) { ?>
@ -160,6 +154,14 @@ window.onload = init;
<div id="notify" class="notify"><span id="notify_body">&nbsp;</span></div>
<div id="infoBoxShadow"><div id="infoBox">BAH</div></div>
<div id="errorBoxShadow" style="display : none">
<div id="errorBox">
<div id="xebTitle">Fatal Exception</div><div id="xebContent">&nbsp;</div>
<div id="xebBtn" align='center'><input type="submit"
onclick="closeErrorBox()" value="Close this window"/></div>
</div>
</div>
<div id="dialog_overlay" style="display : none"> </div>
<div id="prefFooter">

View file

@ -567,13 +567,25 @@ div.helpResponse {
top : -4px;
}
html>body #infoBox {
div#errorBox {
background-color : #ffcccc;
border : 1px solid #ff0000;
font-size : 12px;
position: relative;
overflow : hidden;
left : -4px;
top : -4px;
}
html>body #infoBox, html>body #errorBox {
left : -10px;
top : -10px;
margin : 0;
}
#infoBoxShadow:before, #infoBoxShadow:after {
#infoBoxShadow:before, #infoBoxShadow:after,
#errorBoxShadow:before, #errorBoxShadow:after {
content : " ";
display : block;
background : inherit;
@ -581,7 +593,7 @@ html>body #infoBox {
height : 10px;
}
#infoBoxShadow:before {
#infoBoxShadow:before, #errorBoxShadow:before {
position : absolute;
top : 0;
right : 0;
@ -589,24 +601,30 @@ html>body #infoBox {
background-position : right top;
}
#infoBoxShadow:after {
#infoBoxShadow:after, #errorBoxShadow:after {
margin : -10px 0 0 -10px;
background-position : left bottom;
}
#infoBoxShadow {
#infoBoxShadow, #errorBoxShadow {
background-image : url("images/shadow.png");
background-position : bottom right;
left : 25%;
top : 70px;
width : 50%;
z-index : 5;
position : absolute;
display : none;
min-width : 600px;
}
#infoBoxShadow {
z-index : 5;
}
#errorBoxShadow {
z-index : 400;
}
div.infoBoxContents {
padding : 10px;
margin-bottom : 5px;
@ -1328,44 +1346,6 @@ a.cdmToggleLink:hover {
margin : 10px;
}
#fatal_error {
background : white;
left : 0;
top : 0;
height : 100%;
width : 100%;
z-index : 200;
display : none;
position : absolute;
}
#fatal_error_inner {
font-weight : bold;
margin : 10px;
color : red;
}
#fatal_error_msg {
color : black;
padding : 10px;
font-weight : normal;
background-color : #ffcccc;
border : 1px solid #ff0000;
}
#fatal_error_msg a {
color : red;
}
#fatal_error_msg a:hover {
color : red;
text-decoration : underline;
}
#fatal_error_msg img {
vertical-align : middle;
}
#noDaemonWarning {
position : absolute;
background-color : #ecf4ff;
@ -2084,19 +2064,7 @@ ul#headlineActionsBody li.insensitive:hover {
color : gray;
}
div#extendedErrorBox {
left : 25%;
top : 70px;
width : 50%;
z-index : 999;
position : absolute;
min-width : 600px;
background-color : #ffcccc;
border : 1px solid #ff0000;
font-size : 12px;
}
div#extendedErrorBox div#xebTitle {
div#errorBox div#xebTitle {
background-color : #ff0000;
color : white;
padding : 4px 2px 4px 10px;
@ -2105,16 +2073,18 @@ div#extendedErrorBox div#xebTitle {
font-size : 12px;
}
div#extendedErrorBox div#xebContent {
div#errorBox div#xebContent {
font-size : 12px;
padding : 10px;
}
div#extendedErrorBox textarea {
div#errorBox textarea {
width : 100%;
height : 200px;
}
div#extendedErrorBox input {
div#errorBox input {
margin-bottom : 10px;
}

View file

@ -131,14 +131,14 @@ function backend_sanity_check_callback(transport) {
}
if (!transport.responseXML) {
fatalError(3, "[D001, Received reply is not XML]: " + transport.responseText);
fatalError(3, "Sanity check: Received reply is not XML", transport.responseText);
return;
}
var reply = transport.responseXML.firstChild.firstChild;
if (!reply) {
fatalError(3, "[D002, Invalid RPC reply]: " + transport.responseText);
fatalError(3, "Sanity check: invalid RPC reply", transport.responseText);
return;
}
@ -170,7 +170,7 @@ function backend_sanity_check_callback(transport) {
init_second_stage();
} catch (e) {
exception_error("backend_sanity_check_callback", e);
exception_error("backend_sanity_check_callback", e, transport);
}
}

View file

@ -51,14 +51,6 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<div id="extendedErrorBox" style="display : none">
<div id="xebTitle">Fatal Exception</div>
<div id="xebContent">&nbsp;</div>
<div align='center'>
<input type="submit" onclick="closeErrorBox()" value="Close this window"/>
</div>
</div>
<script type="text/javascript">
//<![CDATA[
if (navigator.userAgent.match("Opera")) {
@ -96,11 +88,6 @@
<div id="notify" class="notify"><span id="notify_body">&nbsp;</span></div>
<div id="fatal_error"><div id="fatal_error_inner">
<h1>Fatal Error</h1>
<div id="fatal_error_msg">Unknown Error</div>
</div></div>
<div id="dialog_overlay" style="display : none"> </div>
<script type="text/javascript">
@ -112,7 +99,15 @@ window.onload = init;
<ul id="debug_output" style='display : none'><li>&nbsp;</li></ul>
<div id="infoBoxShadow"><div id="infoBox">&nbsp;</div></div>
<div id="infoBoxShadow" style="display : none"><div id="infoBox">&nbsp;</div></div>
<div id="errorBoxShadow" style="display : none">
<div id="errorBox">
<div id="xebTitle">Fatal Exception</div><div id="xebContent">&nbsp;</div>
<div id="xebBtn" align='center'><input type="submit"
onclick="closeErrorBox()" value="Close this window"/></div>
</div>
</div>
<div id="header">
<div class="topLinks">

View file

@ -39,7 +39,7 @@ function catchup_callback2(transport, callback) {
setTimeout(callback, 10);
}
} catch (e) {
exception_error("catchup_callback2", e);
exception_error("catchup_callback2", e, transport);
}
}
@ -234,7 +234,7 @@ function headlines_callback2(transport, feed_cur_page) {
remove_splash();
} catch (e) {
exception_error_ext("headlines_callback2", e, transport);
exception_error("headlines_callback2", e, transport);
}
}
@ -290,7 +290,7 @@ function showArticleInHeadlines(id) {
view_mode = document.forms['main_toolbar_form'].view_mode;
view_mode = view_mode[view_mode.selectedIndex].value;
} catch (e) {
exception_error("showArticleInHeadlines/viewmode", e, true);
//
}
if (upd_img_pic && upd_img_pic.src.match("updated.png")) {
@ -386,7 +386,7 @@ function article_callback2(transport, id, feed_id) {
notify("");
} catch (e) {
exception_error("article_callback2", e);
exception_error("article_callback2", e, transport);
}
}