Search Results

Search found 10861 results on 435 pages for 'firefox ex'.

Page 107/435 | < Previous Page | 103 104 105 106 107 108 109 110 111 112 113 114  | Next Page >

  • Getting the innermost .NET Exception

    - by Rick Strahl
    Here's a trivial but quite useful function that I frequently need in dynamic execution of code: Finding the innermost exception when an exception occurs, because for many operations (for example Reflection invocations or Web Service calls) the top level errors returned can be rather generic. A good example - common with errors in Reflection making a method invocation - is this generic error: Exception has been thrown by the target of an invocation In the debugger it looks like this: In this case this is an AJAX callback, which dynamically executes a method (ExecuteMethod code) which in turn calls into an Amazon Web Service using the old Amazon WSE101 Web service extensions for .NET. An error occurs in the Web Service call and the innermost exception holds the useful error information which in this case points at an invalid web.config key value related to the System.Net connection APIs. The "Exception has been thrown by the target of an invocation" error is the Reflection APIs generic error message that gets fired when you execute a method dynamically and that method fails internally. The messages basically says: "Your code blew up in my face when I tried to run it!". Which of course is not very useful to tell you what actually happened. If you drill down the InnerExceptions eventually you'll get a more detailed exception that points at the original error and code that caused the exception. In the code above the actually useful exception is two innerExceptions down. In most (but not all) cases when inner exceptions are returned, it's the innermost exception that has the information that is really useful. It's of course a fairly trivial task to do this in code, but I do it so frequently that I use a small helper method for this: /// <summary> /// Returns the innermost Exception for an object /// </summary> /// <param name="ex"></param> /// <returns></returns> public static Exception GetInnerMostException(Exception ex) { Exception currentEx = ex; while (currentEx.InnerException != null) { currentEx = currentEx.InnerException; } return currentEx; } This code just loops through all the inner exceptions (if any) and assigns them to a temporary variable until there are no more inner exceptions. The end result is that you get the innermost exception returned from the original exception. It's easy to use this code then in a try/catch handler like this (from the example above) to retrieve the more important innermost exception: object result = null; string stringResult = null; try { if (parameterList != null) // use the supplied parameter list result = helper.ExecuteMethod(methodToCall,target, parameterList.ToArray(), CallbackMethodParameterType.Json,ref attr); else // grab the info out of QueryString Values or POST buffer during parameter parsing // for optimization result = helper.ExecuteMethod(methodToCall, target, null, CallbackMethodParameterType.Json, ref attr); } catch (Exception ex) { Exception activeException = DebugUtils.GetInnerMostException(ex); WriteErrorResponse(activeException.Message, ( HttpContext.Current.IsDebuggingEnabled ? ex.StackTrace : null ) ); return; } Another function that is useful to me from time to time is one that returns all inner exceptions and the original exception as an array: /// <summary> /// Returns an array of the entire exception list in reverse order /// (innermost to outermost exception) /// </summary> /// <param name="ex">The original exception to work off</param> /// <returns>Array of Exceptions from innermost to outermost</returns> public static Exception[] GetInnerExceptions(Exception ex) {     List<Exception> exceptions = new List<Exception>();     exceptions.Add(ex);       Exception currentEx = ex;     while (currentEx.InnerException != null)     {         exceptions.Add(ex);     }       // Reverse the order to the innermost is first     exceptions.Reverse();       return exceptions.ToArray(); } This function loops through all the InnerExceptions and returns them and then reverses the order of the array returning the innermost exception first. This can be useful in certain error scenarios where exceptions stack and you need to display information from more than one of the exceptions in order to create a useful error message. This is rare but certain database exceptions bury their exception info in mutliple inner exceptions and it's easier to parse through them in an array then to manually walk the exception stack. It's also useful if you need to log errors and want to see the all of the error detail from all exceptions. None of this is rocket science, but it's useful to have some helpers that make retrieval of the critical exception info trivial. Resources DebugUtils.cs utility class in the West Wind Web Toolkit© Rick Strahl, West Wind Technologies, 2005-2011Posted in CSharp  .NET  

    Read the article

  • Mozilla publie la version alpha d'Account Manager, un plugin pour Firefox pour la gestion de l%u2019

    Mozilla publie la version alpha d'Account Manager, un plugin pour Firefox pour la gestion de l'identité en ligne La fondation Mozilla vient de lancer la version Alpha d'Account Manager, un plugin pour Firefox qui sert à simplifier l'indentification des utilisateurs sur le net. [IMG]http://djug.developpez.com/rsc/account-manager.jpg[/IMG] Cette première version facilitera aux utilisateurs l'identification aux sites populaires comme Google, Facebook et Yahoo en cherchant les informations nécessaires dans le gestionnaire des mots de passe du navigateur. Ce plugin permettra de passer d'un compte à un autre sur le même site par un simple clic, et propose également l'inscription automatique...

    Read the article

  • Firefox : vers une interface de plus en plus « Chrome » ? Mozilla met en ligne des captures d'un nouveau projet d'UI

    Firefox : vers une interface de plus en plus « Chrome » ? Mozilla met en ligne les premières captures d'un projet d'UI pour les prochaines versions du navigateur Mozilla est en train de réfléchir à un nouveau toilettage de l'interface de son navigateur. Et le moins que l'on puisse dire, c'est que ces travaux font étrangement penser à Chrome. Sur le Wiki de la Fondation, les premières captures d'écran du projet (soulignons qu'il s'agit bien d'un projet et pas encore d'une décision) montrent que le bouton Firefox (le menu général) a disparu au profit d'un nouveau menu qui centralise toutes les fonctionnalités principales. Ce changement fait penser à la « clef à molette » de Chrome.

    Read the article

  • Pas de Firefox pour Windows Phone 7, la faute à l'absence de possibilité de développement en code na

    Mise à jour du 25/03/10 Pas de Firefox Mobile pour Windows Phone 7 Series La faute au choix du C# et de Silverlight et à l'absence de développement en code natif sur le futur OS de Microsoft « Nous ne serons pas en mesure de fournir Firefox pour Windows Phone 7 ». Cette déclaration vient de Stuart Parmenter, responsable du développement mobile chez Mozilla. Le responsable semble le regretter : « Alors que nous pensons Windows Phone 7 semble intéressante et qu'il a le potentiel pour s'imposer sur le marché, Microsoft a malheureusement décidé de fermer le développement des applications natives ». C'es...

    Read the article

  • Add-ons for Firefox - Java Plugin has been blocked JRE versions below 1.6.0_31 or between 1.7.0 and 1.7.0_2

    - by user702295
    As Java 1.6u31 is not certified for use with EBS or Demantra, you may notice issues in relation to the Java plug-in.  Demantra Development is currently working to certify Java 1.6u31.  They are recommending that you upgrade to that version. EBS customers, should not be installing 1.6u31 as it is not certified.  If you do upgrade your browser, you will either need to downgrade to a lower release of Firefox or find a way of allowing Firefox to use the older version of the Java Plug-in.

    Read the article

  • Firefox va supporter le H.264 dans sa version mobile après avoir bataillé contre ce codec propriétaire : pragmatisme ou renoncement ?

    Firefox supporte le H.264 après avoir longtemps bataillé contre ce codec propriétaire : pragmatisme ou renoncement ? Le codec H.264 a longtemps fait débat divisant les navigateurs en deux clans. Mozilla s'était rangé dans le camp contre ce codec, refusant catégoriquement d'obtenir une licence propriétaire pour son Firefox. La fondation militait depuis le début pour un web ouvert à 100%. Mais voila que sur le groupe de discussions de ses développeurs, Andreas Gal, Directeur de la recherche de Mozilla, annonce un virage. Du moins en ce qui concerne la future plateforme mobile de la fondation à but non lucratif. [IMG]http://ftp-developpez.com/sarah-mendes/logo_...

    Read the article

  • Mozilla sort une version pre-bêta de Firefox qui intègre le header Do Not Track, dans le cadre des nightly builds

    Mozilla sort une version pre-bêta de Firefox qui intègre le header Do Not Track, dans le cadre des nightly builds Mise à jour du 01.02.2011 par Katleen Mozilla vient d'intégrer un prototype de sa fonctionnalité "Do Not Track" à Firefox, dans le cadre de sa dernière nightly build. Il est activable via la section "Advanced" des paramètres de préférences du navigateur, mais pas encore depuis le panneau "Privacy", au grand damn de Mozilla. Son développement a été réalisé en collaboration avec l'Université de Stanford, et son design légèrement revu : il affiche désormais "DNT : 1" lorsque l'option est activée (alors qu'auparavant, il était prévu que ...

    Read the article

  • Le navigateur mobile de Firefox est disponible en version pre-Alpha, pour des tests sur les téléphon

    Le navigateur mobile de Firefox est disponible en version pre-Alpha, pour des tests sur les téléphones Android Depuis quelques semaines, une build précoce de Fennec circulait sur certains sites Internet. La version mobile de Firefox était disponible au téléchargement pour les téléphones Android. Cependant, cette mouture n'était pas officielle puisqu'offerte par un particulier et optimisée pour le Droid. Aujourd'hui, Mozilla pallie à ce manque et rend disponible une build pre-Alpha de Fennec, compatible avec au moins avec Droid et le Nexus One. Cette version est uniquement destinée à la réalisation de tests. Elle ne permet pas encore les mises à jour automatiques, mais Mozilla la trouve assez aboutie pour être décorti...

    Read the article

  • Firefox va supporter le H.264 dans sa version mobile après avoir bataillé contre ce codec propriétaires : pragmatisme ou renoncement ?

    Firefox supporte le H.264 après avoir longtemps bataillé contre ce codec propriétaires : pragmatisme ou renoncement ? Le codec H.264 a longtemps fait débat divisant les navigateurs en deux clans. Mozilla s'était rangé dans le camp contre ce codec, refusant catégoriquement d'obtenir une licence propriétaire pour son Firefox. La fondation militait depuis le début pour un web ouvert à 100%. Mais voila que sur le groupe de discussions de ses développeurs, Andreas Gal, Directeur de la recherche de Mozilla, annonce un virage. Du moins en ce qui concerne la future plateforme mobile de la fondation à but non lucratif. [IMG]http://ftp-developpez.com/sarah-mendes/logo...

    Read the article

  • Firefox 4 Beta 8 : amélioration de la synchronisation entre ordinateurs et mobiles, et du support de WebGL

    Firefox 4 Beta 8 Amélioration de la synchronisation entre ordinateurs et mobiles et du support de WebGL Mise à jour du 22/12/2010 par Idelways La version 4 du navigateur Firefox vient d'avoir sa huitième beta. Plus que deux versions de test nous séparent donc de la sortie de la version finale annoncée officiellement pour début 2011. Comme attendu, cette bêta n'amène pas de nouvelles fonctionnalités ou de changement dans l'interface mais elle est tout de même intéressante à plus d'un titre. Cette beta se concentre en effet sur l'amélioration de l'existant. Les parties sur lesquelles se sont c...

    Read the article

  • Firefox adopte le H.264 après avoir longtemps bataillé contre ce codec propriétaires : pragmatisme ou renoncement ?

    Firefox adopte le H.264 après avoir longtemps bataillé contre ce codec propriétaires : pragmatisme ou renoncement ? Le codec H.264 a longtemps fait débat divisant les navigateurs en deux clans. Mozilla s'était rangé dans le camp contre ce codec, refusant catégoriquement d'obtenir une licence propriétaire pour son Firefox. La fondation militait depuis le début pour un web ouvert à 100%. Mais voila que sur le groupe de discussions de ses développeurs, Andreas Gal, Directeur de la recherche de Mozilla, annonce un revirement de situation total. Du moins en ce qui concerne la future plateforme mobile de la fondation à but non lucratif. [IMG]http://ftp-developpez....

    Read the article

  • Firefox sur le déclin ? Presque, répond un de ses co-créateurs : un avis qui ne fait pas l'unanimité

    Mise à jour du 19/05/10 Firefox est-il sur le déclin ? Presque, répond son co-créateur mais son avis ne fait pas l'unanimité Black Ross, un des créateurs de Firefox, employé aujourd'hui de Facebook, pense que son navigateur n'est plus ce qu'il était. C'est en ces termes qu'il a répondu avant-hier à une question sur l'avenir du Panda Roux : « Je pense que la Fondation Mozilla est progressivement retombées dans ses anciens travers, elle est être trop timide, trop passive et trop focalisée sur le consensus pour délivrer rapidement des produits innovants ». Son avis n'est pas isolé. Un autre co-fondateur du navigateur, John ...

    Read the article

  • Firefox 11 affiche la structure des pages web en 3D et les changements dans les feuilles de styles CSS en temps réel

    Firefox 11 affiche la structure des pages web en 3D Et les changements dans les feuilles de style CSS en temps réel Firefox 11 vient d'intégrer un ensemble d'améliorations qui risquent de ne pas laisser les développeurs web indifférents. La première nouveauté est un outil qui permet de visualiser la structure (CSS, etc.) d'une page en 3D. Page Inspector 3D View, surnommé Tilt, repose sur WebGL. « Cet outil permet à tout utilisateur de comprendre immédiatement le lien entre le code et la page finale », explique Mozilla. « Alors que les outils pour développeurs, tels que « view source », ont toujours été utiles pour apprendre à développer une page, l'affichage en 3D...

    Read the article

  • How to enjoy Firefox with their lot&rsquo;s of version.

    - by anirudha
    many developer want to use many version of a application. Firefox have not facility to stand alone installation but here is a trick to enjoy their nightly and stable version both. make a folder anywhere in your system. make two folder the name depend on your choice. in first install the Firefox Nightly and second install the current stable version 3.6.12 now the application already add to your start menu otherwise add them manually. now you can use both version nightly and stable. if you deug your web application in IDE such as visual studio or other then they force to open the default browser set in your system they open the version who you use last time. if you use last time nightly then they open your web-application in nightly otherwise in current stable version.

    Read the article

  • Mozilla isole les plug-in de Firefox avec la sortie d'une nouvelle beta et la mise en application du

    Mise à jour du 21/04/09 Mozilla isole les plug-ins de Firefox Avec la sortie de la beta de la version 3.6.4 et du "Projet Lorentz" Le futur Firefox 3.6.4 ne sera pas une mise à jour aussi mineure que cela. L'arrivée du Projet Lorentz est en effet attendue avec impatience par les utilisateurs du navigateur. Pour l'instant en beta (qui vient tout juste de sortir), cette nouvelle release, issue de ce projet Lorentz, inclut un système de protection contre les crashs en isolant les plugins défectueux lorsque ceux-ci ont un problème. Sont particulièrement ciblés Flash, Quicktime et Silverlight. ...

    Read the article

  • Firefox 4 tiendra-t-il ses très nombreuses promesses ? Début de réponse avec sa première beta prévue

    Mise à jour du 11/05/10 Firefox 4 tiendra-t-il ses très nombreuses promesses ? Début de réponse avec sa première beta prévue pour juin Le cahier des charges de Firefox 4 est bien rempli. On savait déjà que l'interface graphique serait totalement revue (lire ci-avant). On en sait à présent d'avantage sur le reste du navigateur. Mike Beltzner, directeur du développement de la Fondation Mozilla, a fixé hier les nombreux objectifs à atteindre lors d'un Webcast sous forme de feuille de route. L'objectif le plus important reste certainement celui de la puissance et de la vitesse. La puissance d'u...

    Read the article

  • Google et Mozilla publient des mises à jour de sécurité importantes pour Chrome et Firefox avant l'évènement de hacking "Pwn2Own"

    Google et Mozilla publient des mises à jour de sécurité importantes pour Firefox et Chrome En prévision de l'évènement de hacking "Pwn2Own" La fondation Mozilla vient de publier une importante mise à jour de sécurité de la branche actuellement stable du navigateur Firefox (3.6), en prévision de l'évènement de Hacking « Pwn2Own » qui aura lieu la semaine prochaine. Cette mise à jour colmate 10 failles de sécurité. Sept d'entre elles sont jugées critiques et l'une le serait même "hautement". Cette version 3.6.14 est la première mise à jour de la branche 3.6 cette année, les efforts de la fondation étant concentrées sur la finalisation tant attendue...

    Read the article

  • Firefox pour Android : première version finale plus rapide et plus ergonomique, et avec le support du Flash

    Firefox pour Android : première beta pour la nouvelle version Avec des performances très intéressantes et un « Awesome Screen » Le nouveau projet de Firefox sur Android avance à grands pas. La beta vient en effet d'arriver sur Google Play (ex-Android Market). Pour l'instant, le navigateur n'est disponible que sur smartphone et uniquement en anglais mais le début reste prometteur. « Cette beta est très spéciale parce que nous avons beaucoup travaillé dessus pour lui ajouter des fonctionnalités, améliorer ses performances et résoudre les problèmes pour que la navigation soit plus rapide et plus simple », explique Mozilla en marge de ce lancement. Le travail sur...

    Read the article

  • WebGL 1.0, spécification finalisée pour la bibliothèques d'accélération 3D libre soutenue par Chrome, Firefox, Opera et Safari

    La spécification de WebGL 1.0 est finalisée Pour la bibliothèques d'accélération 3D libre soutenue par Chrome, Firefox, Opera et Safari Ces dernier temps, vous avez entendu parler de la mise en place de WebGL dans les nouvelles versions des différents navigateurs web. Comme vous devez déjà le savoir, Firefox 4, Google Chrome 9 (rendez-vous à l'adresse "about:flags" pour activer WebGL supportent la nouvelle technologie (également soutenue par Apple pour Safari et par Opera). Khronos, un consortium de constructeurs de cartes graphiques (NVidia, AMD, Imagination Technologies, ...) et de différents grand acteurs dans le monde de la 3D (Activision, Epic Games, ...) annonce dur...

    Read the article

  • Une 13ème bêta sera-t-elle nécessaire pour Firefox 4 ? Les développeurs du navigateur laissent entendre que oui

    Une 13ème bêta sera-t-elle nécessaire pour Firefox 4 ? Les développeurs du navigateur laissent entendre que oui Mise à jour du 18.02.2011 par Katleen Malgré la sortie il y a dix jours de la onzième bêta de Firefox 4, le navigateur est toujours très en retard. Et, pour son équipe de développement, l'histoire n'est pas encore terminée. Une douzième bêta est sur les rails, et ne devrait plus tarder à arriver (dans quelques jours, les derniers bogues sont en train d'y être corrigés). Cette nouvelle mouture "est la dernière prévue", souligne la Fondation Mozilla, qui n'exclut cependant pas le recours à une treizième bêta. "Nous nous réservons ce droit, si les p...

    Read the article

  • Une faille critique dans Firefox 3.6 confirmée par Mozilla, sera patchée à la fin du mois : la solut

    Une faille critique dans Firefox 3.6 Confirmée par Mozilla, sera patchée à la fin du mois : la solution en attendant C'est un bloggeur russe qui vient de mettre à jour une faille critique dans la dernière version de Firefox. Dans un premier temps, celui-ci avait refusé de communiquer ses informations à la Fondation Mozilla. Mais, tout comme sa première décision était difficilement compréhensible, son changement d'attitude s'est déroulé sans la moindre explication. Mozilla confirme le caractère "critique" de la faille : "La vulnérabilité a été jugée critique et pourrait conduire à l'exécution de code à distance par un pirate", peut-on lire sur le...

    Read the article

  • How to troubleshoot rendering differences between Chrome/IE and Firefox? [on hold]

    - by user32548
    I have a personal website and just realized that the display is very different between Firefox (tested 19.0.2 and 25) and Chrome 30.0.1599.101 m Firefox display (this is how I intended it to look. In Chrome & IE9.0 the DIVs all seem to stagger on their own..... ? Im just an amateur and this is my personal blog for fun, Ive never had to troubleshoot a rendering issue like this one. Not sure how to go about doing it? Can Firebug help with determining where layout is inherited from? I have sample HTML if needed but didn't want to cloud up the questions a wall of text.

    Read the article

  • Website. AJAX and FIREFOX problems. I dont think Firefox likes ajax..?

    - by DJDonaL3000
    Working on an AJAX website (HTML,CSS,JavaScript, AJAX, PHP, MySQL). I have multiple javascript functions which take rows from mysql, wrap them in html tags, and embed them in the HTML (the usual usage of AJAX). THE PROBLEM: Everything is working perfect, except when I run the site with Firefox (for once its not InternetExplorer causing the trouble). The site is currently in the developmental stage, so its offline, but running on the localhost (WampServer, apache, Windows XP SP3,VISTA,7). All other cross-browser conflicts have been removed, and works perfectly on all major browsers including IE, Chrome, Opera and Safari, but I get absolutely nothing from the HTTPRequest (AJAX) if the browser is Firefox. All browsers have the latest versions. THE CODE: I have a series of javascript functions, all of which are structured as follows: function getDatay(){ var a = document.getElementById( 'item' ).innerHTML; var ajaxRequest; try{//Browser Support Code: // code for IE7+, Firefox, Chrome, Opera, Safari: ajaxRequest = new XMLHttpRequest(); } catch (e){ // code for IE6, IE5: try{ ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ // Something went wrong alert("Your browser is not compatible - Browser Incompatibility Issue."); return false; } } } // Create a function that will receive data sent from the server ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState < 4){ document.getElementById( 'theDiv' ).innerHTML = 'LOADING...'; } if(ajaxRequest.readyState == 4){ document.getElementById( 'theDiv' ).innerHTML = ajaxRequest.responseText; } } //Post vars to PHP Script and wait for response: var url="01_retrieve_data_7.php"; url=url+"?a="+a; ajaxRequest.open("POST", url, false);//must be false here to wait for ajaxRequest to complete. ajaxRequest.send(null); } My money is on the final five lines of code being the cause of the problem. Any suggestions how to get Firefox and AJAX working together are most welcome...

    Read the article

  • What do the numbers on Western Digital drives mean?

    - by Evan Carroll
    There are numerous numbers on a Western Digital drive, MDL (presumably model, ex WD5000BEKT-00KA9T0) -- not sure what the 99KA9T0 is. WWN (ex 50014EE25AC8C945) DCM (ex HBNTJBBB) LBA (ex 976773168) R/N (ex 77174) Then there are three numbers on the back of the PCB on a sticker White Sticker Left: 2061-771714-002 AC White Sticker Right: XT BD34 T7KQ 8 0002270 White Sticker far-Right: 272 Then there is one number printed on the PCB, REV P1 2060-771714-002 Then there is one number (or three) on the spindle, 71206-T8Y-03 9X0X22MF 32H Does anyone know what these numbers mean?

    Read the article

  • Why Is Faulty Behaviour In The .NET Framework Not Fixed?

    - by Alois Kraus
    Here is the scenario: You have a Windows Form Application that calls a method via Invoke or BeginInvoke which throws exceptions. Now you want to find out where the error did occur and how the method has been called. Here is the output we do get when we call Begin/EndInvoke or simply Invoke The actual code that was executed was like this:         private void cInvoke_Click(object sender, EventArgs e)         {             InvokingFunction(CallMode.Invoke);         }            [MethodImpl(MethodImplOptions.NoInlining)]         void InvokingFunction(CallMode mode)         {             switch (mode)             {                 case CallMode.Invoke:                     this.Invoke(new MethodInvoker(GenerateError));   The faulting method is called GenerateError which does throw a NotImplementedException exception and wraps it in a NotSupportedException.           [MethodImpl(MethodImplOptions.NoInlining)]         void GenerateError()         {             F1();         }           private void F1()         {             try             {                 F2();             }             catch (Exception ex)             {                 throw new NotSupportedException("Outer Exception", ex);             }         }           private void F2()         {            throw new NotImplementedException("Inner Exception");         } It is clear that the method F2 and F1 did actually throw these exceptions but we do not see them in the call stack. If we directly call the InvokingFunction and catch and print the exception we can find out very easily how we did get into this situation. We see methods F1,F2,GenerateError and InvokingFunction directly in the stack trace and we see that actually two exceptions did occur. Here is for comparison what we get from Invoke/EndInvoke System.NotImplementedException: Inner Exception     StackTrace:    at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)     at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)     at WindowsFormsApplication1.AppForm.InvokingFunction(CallMode mode)     at WindowsFormsApplication1.AppForm.cInvoke_Click(Object sender, EventArgs e)     at System.Windows.Forms.Control.OnClick(EventArgs e)     at System.Windows.Forms.Button.OnClick(EventArgs e) The exception message is kept but the stack starts running from our Invoke call and not from the faulting method F2. We have therefore no clue where this exception did occur! The stack starts running at the method MarshaledInvoke because the exception is rethrown with the throw catchedException which resets the stack trace. That is bad but things are even worse because if previously lets say 5 exceptions did occur .NET will return only the first (innermost) exception. That does mean that we do not only loose the original call stack but all other exceptions and all data contained therein as well. It is a pity that MS does know about this and simply closes this issue as not important. Programmers will play a lot more around with threads than before thanks to TPL, PLINQ that do come with .NET 4. Multithreading is hyped quit a lot in the press and everybody wants to use threads. But if the .NET Framework makes it nearly impossible to track down the easiest UI multithreading issue I have a problem with that. The problem has been reported but obviously not been solved. .NET 4 Beta 2 did not have changed that dreaded GetBaseException call in MarshaledInvoke to return only the innermost exception of the complete exception stack. It is really time to fix this. WPF on the other hand does the right thing and wraps the exceptions inside a TargetInvocationException which makes much more sense. But Not everybody uses WPF for its daily work and Windows forms applications will still be used for a long time. Below is the code to repro the issues shown and how the exceptions can be rendered in a meaningful way. The default Exception.ToString implementation generates a hard to interpret stack if several nested exceptions did occur. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; using System.Globalization; using System.Runtime.CompilerServices;   namespace WindowsFormsApplication1 {     public partial class AppForm : Form     {         enum CallMode         {             Direct = 0,             BeginInvoke = 1,             Invoke = 2         };           public AppForm()         {             InitializeComponent();             Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;             Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);         }           void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)         {             cOutput.Text = PrintException(e.Exception, 0, null).ToString();         }           private void cDirectUnhandled_Click(object sender, EventArgs e)         {             InvokingFunction(CallMode.Direct);         }           private void cDirectCall_Click(object sender, EventArgs e)         {             try             {                 InvokingFunction(CallMode.Direct);             }             catch (Exception ex)             {                 cOutput.Text = PrintException(ex, 0, null).ToString();             }         }           private void cInvoke_Click(object sender, EventArgs e)         {             InvokingFunction(CallMode.Invoke);         }           private void cBeginInvokeCall_Click(object sender, EventArgs e)         {             InvokingFunction(CallMode.BeginInvoke);         }           [MethodImpl(MethodImplOptions.NoInlining)]         void InvokingFunction(CallMode mode)         {             switch (mode)             {                 case CallMode.Direct:                     GenerateError();                     break;                 case CallMode.Invoke:                     this.Invoke(new MethodInvoker(GenerateError));                     break;                 case CallMode.BeginInvoke:                     IAsyncResult res = this.BeginInvoke(new MethodInvoker(GenerateError));                     this.EndInvoke(res);                     break;             }         }           [MethodImpl(MethodImplOptions.NoInlining)]         void GenerateError()         {             F1();         }           private void F1()         {             try             {                 F2();             }             catch (Exception ex)             {                 throw new NotSupportedException("Outer Exception", ex);             }         }           private void F2()         {            throw new NotImplementedException("Inner Exception");         }           StringBuilder PrintException(Exception ex, int identLevel, StringBuilder sb)         {             StringBuilder builtStr = sb;             if( builtStr == null )                 builtStr = new StringBuilder();               if( ex == null )                 return builtStr;                 WriteLine(builtStr, String.Format("{0}: {1}", ex.GetType().FullName, ex.Message), identLevel);             WriteLine(builtStr, String.Format("StackTrace: {0}", ShortenStack(ex.StackTrace)), identLevel + 1);             builtStr.AppendLine();               return PrintException(ex.InnerException, ++identLevel, builtStr);         }               void WriteLine(StringBuilder sb, string msg, int identLevel)         {             foreach (string trimmedLine in SplitToLines(msg)                                            .Select( (line) => line.Trim()) )             {                 for (int i = 0; i < identLevel; i++)                     sb.Append('\t');                 sb.Append(trimmedLine);                 sb.AppendLine();             }         }           string ShortenStack(string stack)         {             int nonAppFrames = 0;             // Skip stack frames not part of our app but include two foreign frames and skip the rest             // If our stack frame is encountered reset counter to 0             return SplitToLines(stack)                               .Where((line) =>                               {                                   nonAppFrames = line.Contains("WindowsFormsApplication1") ? 0 : nonAppFrames + 1;                                   return nonAppFrames < 3;                               })                              .Select((line) => line)                              .Aggregate("", (current, line) => current + line + Environment.NewLine);         }           static char[] NewLines = Environment.NewLine.ToCharArray();         string[] SplitToLines(string str)         {             return str.Split(NewLines, StringSplitOptions.RemoveEmptyEntries);         }     } }

    Read the article

< Previous Page | 103 104 105 106 107 108 109 110 111 112 113 114  | Next Page >