protected void btn_Click(object sender, EventArgs e)
{
throw new Exception("Exception générée pour test !");
}
L’exception n’étant pas gérée dans la méthode, on peut toujours la capturer dans la méthode « Application_Error » du fichier « Global.asax » :
protected void Application_Error(object sender, EventArgs e)
{
// Capturer la dernière erreur survenue
Exception exception = Server.GetLastError().GetBaseException();
try
{
// Mettre l'erreur dans la mémoire de la session
Context.Session["Excep"] = exception;
// Rediriger notre appel vers la page d'erreur
this.Response.Redirect("~/PageDErreur.aspx");
}
catch (Exception innerEx)
{
string errorMsg = "Une erreur s'est produite lors du traitement de l'exception : " + exception.Message + ". ";
errorMsg += Environment.NewLine + innerEx.ToString();
}
}
<input type="button" value="Test d'erreur JavaScript" onclick="javascript: testDErreurJavaScript();" />
En appelant notre fonction JavaScript on génére l’erreur comme suit :
function testDErreurJavaScript() {
try {
throw 'Test d'erreur JavaSript !';
}
catch (exception) {
alert(exception);
}
}
function testDErreurJavaScript() {
throw 'Test d'erreur JavaSript !';
}
Dans ce cas, on peut profiter de l’événement « onerror » de l’objet JavaScript « window » comme suit :
window.onerror = function() {
alert('An error has occurred!')
return true;
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace ApplicationWebAjax
{
/// <summary>
/// Summary description for ServiceWebAjax
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class ServiceWebAjax : System.Web.Services.WebService
{
[WebMethod(EnableSession=true)]
public string GereException(string errorMsg, string url, int lineNumber)
{
// Ici ajouter votre code de mise en log, ...
return "Erreur traitée au niveau serveur !";
}
}
}
window.onerror = function(errorMsg, url, lineNumber) {
ApplicationWebAjax.ServiceWebAjax.GereException(errorMsg, url, lineNumber, GereException_SucceededCallback, FailedCallback);
alert(errorMsg);
return true;
}
function GereException_SucceededCallback(resultat) {
document.getElementById('testDiv').innerHTML += '<b>' + resultat + '</b><br />';
}
function FailedCallback(error) {
var stackTrace = error.get_stackTrace();
var message = error.get_message();
var statusCode = error.get_statusCode();
var exceptionType = error.get_exceptionType();
var timedout = error.get_timedOut();
alert("Stack Trace: " + stackTrace + "nr" +
"Service Error: " + message + "nr" +
"Status Code: " + statusCode + "nr" +
"Exception Type: " + exceptionType + "nr" +
"Timedout: " + timedout);
}
Combien cela coûte-t-il au total ? Quelles aides apportent l'état et les acteurs du marché pour alléger cette charge non choisie ? Tous les détails sur Commentçamarche.net.