Free Web-Based Exception Reporting
Tsar writes "Promethean Personal Software (makers of Sherpa, a code generating tool for db apps) have quietly released ExceptionCollection, a free (as in beer) online service for developers using any SOAP-enabled environment. You sign up on the site, download their component, add three or four lines of code to your app, and any exceptions thrown by your users get logged at ExceptionCollection.com for your later perusal (the last 100 anyway). There are several options, like whether reporting requires user approval. Is this as cool as it looks, or a solution in search of a problem?"
I don't like exceptions because you have to catch them. Exception based coding is for amateurs.
Real professionals like me, who graduated at the top of his class from Rockhurst College in Kansas City, a top college - pass return codes around rather than do all that exception baloney.
And it is some big time BALONEY.
Why don't you just add one more function to your SOAP server and have your exception handler connect to that?
There is a definite market for something like this. Knowing what exceptions your application is generating at runtime "in the wild" is very valuable to help debug and speed bug fixes.
The only problem is that it would be much more convenient if the exception were sent directly to the application makers instead of to some third party. Microsoft's error reporting system is somewhat like this, but I don't know anyone who actually sends in bug reports when an application crashes in XP. Likewise, Firefox used to have a quality feedback agent, but I never saw it pop up or notify me in any way. Maybe it is silently calling home?
If your users are your testers, it's very important that you get as much detailed information from any problems that arise as you can. Ideally these bugs would have been fixed before it ever hit the doors, but in this day and age of rapid development and short production cycles, it's sometimes better to give a working version to the customer and update it periodically.
Jesus saved me from my past. He can save you as well.
I can't think of any reason NOT to send detailed information about where my application is broken and possibly exploitable to one centralized location that I maintain no control over.
I wonder what they do with their exceptions.
We at Promethean Personal Software promise to never share your email address with another organization, but we reserve the right to send you one piece of email ("spam") about our products per week. You can opt out of the service at any time.
Sounds like I have to "pay" via annoying emails about products... Also, I'm not sure what the advantage is here over a normal bug tracking system. Automatic recording of the Exception message? Blah...
We are blind to the Worlds within us
waiting to be born...
...sounds like a major security faux pas.
It only allows the developer to see the last 100 exceptions? That might be fine and dandy for a site that only receives 100 hits per day. But when you're running an enterprise-grade site that gets 5 or 6 million hits on a slow day, 100 exceptions will basically be nothing. You could probably sit there and refresh the list of exceptions, getting a completely new list each time.
Cyric Zndovzny at your service.
1. Collect data from unsuspecting users of your SOAP code.
2. Throw an "exception" containing said data.
3. Automatically harvest the data from ExceptionCollection.com.
4. Profit.
I wonder if these people have thought about the insecure/immoral/illegal ways this service could be used and have taken steps to prevent that.
Two wrongs don't make a right, but three lefts do.
Maybe I shouldn't have spent a few minutes staring at the lack of comments wondering whether my world was going to fall apart.
Fucking thing won't let me post. I hate you all, I'm going to go kill myself now.
This application is better in that it collects all the relevant information into a zip file (including a stack dump), and helps the user to e-mail it to you. It works in C/C++ (Windows only) and doesn't require any third party involvement.
We use it in a deployed product and it works very well.
john
It looks like their site has one HTML error.
p tioncollection.com
http://validator.w3.org/check?uri=http://www.exce
Indeed, I believe it is very important that a company selling a error-detection program take the care and time to ensure that their websites are standards-compliant. It shows that they're concerned with writing correct code, be it HTML or Perl or whatever.
Cyric Zndovzny at your service.
I think I'll stick with recording my exception logs in my own database where I have some measure of security around it, and can look at all of them, not the last 100.
An exceptional number of users.
This sounds similar to the BugzScout support in FogBugz (www.fogcreek.com), except that there the errors get sent to your own database on your own web site, and are not limited to the last 100. Definitely cool and valuable to track where your application is breaking, and have the ability to report back to customers whether a specific problem is fixed, being worked on, or needs help to track down.
old style logging. why not just log the exception to a file (as its usually done), and mail it to the programmers at a regular interval. why waste so much of bandwidth, especially in the case where things go horribly wrong and exceptions are thrown just about everywhere.
also, is this mechanism asynchronous ? coz synchronous would mean a lot of latency added to that particular thread, since things are now getting reported to some remote portal.
IMHO, its just another wasteful use of web services. just coz its the fashionable term these days doesn't mean it should be used for all purposes.
web services for exception reporting.....aarrgghhhh !!!
I used to do something like this using my personal web site. I didn't use it for exception reporting -- just for publishing generic statistics about our production stream. I could then monitor them remotely from my cell phone's web browser.
The key thing to be concerned about (as others have observed) is that any messages sent must be sufficiently generic so as not to give away vital information to the outside world.
When I published my stats, I used abbreviations that only I understood followed by percentages. That's it. If someone else saw it, they wouldn't understand it, and, even if they did, it was just non-vital aggregate information that wouldn't do them any good anyway.
This is the maximum level that such exception reporting could (wisely) rise to, and, as such, would be of limited value. I know from my own experience at large companies that log/exception output tends to contain things like userIDs, passwords, and server names, which could easily find itself passed along through these folks' API.
For this reason, it seems like a good service if installed internally, but a bad idea beyond proof of concept for anything larger than a mom-and-pop, where a single programmer knows and understands the whole system and can send sufficiently vague exceptions.
Most businesses I know have ways of finding out when their application crashes. It's not much harder than putting some code into the page it goes to when you do get an exception, and having it email you things like the stack trace, and other important information. That's just the basic one, but a full fledged web system with database is the other end of the spectrum. Basically stuff like this isn't that hard to implement on your own, and gives you much better control in the end.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
Remember to strip out an connection strings/password etc from you exception info if you're think of using this...
Why you would, I don't know. But still.
Pete
Or? What kind of nerd ARE you?! Duh, it's BOTH!
In fact, a good case could be made that it looks so damn cool BECAUSE it is a solution in search of a problem!
multifariam.net -- yet another nerd blog
While I agree it's important to have valid HTML it appears the one error on their page is quite small. They used the "name" attribute which they should have left out since they already have an the "id" attribute on one of their forms. I think we can forgive them this one mistake.
Bradley Holt
So, instead of discussing it, I will ask your opinion of .rar files. I fucking hate them. Just yesterday I downloaded new second season episodes of Battlestar Galactica 2003. All in gaziilion .rar files. What the fuck is the deal with .rar? Why can't you just share a single .avi file?
Don't tell me you post this crap to something obsolete like usenet?
Indeed, it isn't a big mistake at all. Yet it's easily caught by just running it through the free W3C HTML validation service, and it's very easily fixed once caught. Had they taken the care to make sure their website contains valid HTML code, then I would have considered using their service in the future. But I'm not sure if I will do so now.
They do, of course, have a more standards-compliant webpage than the PHP Nuke webpage (124 errors) or the Drupal webpage (7 errors).
Cyric Zndovzny at your service.
Just keeping the exceptions in the logfiles so you can literary put anything in the exception what you want, not having to wonder if some debug information which happens to be equal to a clients transaction wanders around on the network or even the internet. Plus logfiles can be analyzed too, enough handy tools around for that too (I use vi).
My wife's sketchblog Blob[p]: Gastrono-me
if you are going to take the day off school you can start by helping your mum
And I thought I was sad, geez you need to get out more.
One obvious problem with such a scheme is that most users won't update the software every time a release is made available.
Suppose you fix a bug and release a new version. It will be some time before many people have switched to the new version and so you will, in the meantime, continue to get the same bug reports for a bug you've already exterminated.
The clear result is that of the latest 100 bug reports received, most will likely be completely useless.
Nice try, but Rockhurst College is in Kansas City, Missouri.
Years ago applications were exepcted to just work - from a user point of view. But with the increased complexity of applications the user is becoming increasingly involved in the later stage testing and development of applications. This is particularly true in open source development, where the development team need to use every possible test scenerio available.
Although this thing isn't vastly developed, I think we are going to see a lot more services available to developers to help them better integrate with their users and to understand their issues with the software. I would like to see some better reporting tools, other than the last 100 exceptions, surely the top 100 exceptions would be more useful?
-- "Can't sleep, clowns will eat me!"
Exception: Could not handle error: an additonal exception was encountered
...
...
...
...
at com.example.util.BaseExceptionHandler() Line 450
Root Cause:
OutOfMemoryError: Out of memory during exception construction
at Exception() Line 5
Root Cause:
IOException: Could not connect to exceptionollection.com
at com.ExceptionCollection.reportException() Line 127
Root Cause:
ApplicationException: HelloWorld program is too simple
at com.example.webapp.HelloWorld.print() Line 907
The only problem is SEH (structured exception handling) or lack thereof. These are the access violations, pure virtual calls, etc... that people sometimes forget to catch. Even if your code and any third-party libs don't throw any c++ exceptions whatsoever, you always have the possibility for structure exceptions.
I agree though, personally don't like c++ exceptions, I like return codes much much better.
Although I doubt that this will fly on an enterprise level project.
It looks like their site has one HTML error.
Jesus fucking christ. get a life. this is not an academic exercise, it is a web page. Does the web page look ok? Does it render well in all browsers? That's enough.
I believe it is very important that a company selling a error-detection program take the care and time to ensure that their websites are standards-compliant. It shows that they're concerned with writing correct code, be it HTML or Perl or whatever.
HTML isn't code, it's a markup language. And frankly, in many companies, the website is maintained by the marketing people, not the coders.
You remind me of the Dilbert cartoon where a potential customer tells Dilbert, "My company can't buy from your company unless your company is ISO 9000 certified."
Dilbert says, "You mean you would choose our crappy, expensive product instead of our competitor's high-quality, inexpensive product because we are ISO 9000 certified and they are not?"
The customer says, "Yes."
Dilbert says, "Well, my documented procedure says that I must now laugh in your face."
Had they taken the care to make sure their website contains valid HTML code, then I would have considered using their service in the future. But I'm not sure if I will do so now.
You judge the quality of a company's products by whether their webpage passes an HTML validator?
You sir, are an idiot.
TFA:Your programs can be written in C#/VB.NET, Java, VB6, Delphi, C++, or any other SOAP-enabled language
.NET code.
.NET, we provide a compiled component (DLL file)
.NET.
I lack to see anything apart from
For
?!. Not even
gtkaml.org
I have been doing this for my company for the last four years. Capturing Exception and Workstation information from a user running our windows based application, including a callstack trace, then sending it back via HTTP to an open source web based bug tracker which I customized a "postBug.php" for. Developers simply login the bug tracker and watch incomming reports. Users also get a bug # which they can reference if they contact our support lines. The windows code is in Delphi, but can be ported to anything else, the bug tracker is "Anthill bug tracker" but i have been considering switching to Mantis. The system cost us under 2k to setup and served us very well over the last few years. While some may debate the effectiveness of exceptions and how they should be handled, let's face it, they occur and when they do at a client site where u don't have a clue what they're doing, the detailed reports come in handy for remote debugging your applications. Delphi has a Global Exception hook for any unhandled exception which traps and sends the errors with tons of info to our bug tracker, i am sure you could do something like that with other languages. Give Anthill/Mantis and "craft your own client" a shot or contact me if you use delphi.
I can see this being useful for hosting providers, such as mine that for security reasons do not allow access to the io.* package in .NET. Also nice for a consolodating log messages in a cluster/farm. For mission critical stuff, you can't beat a log file, unless maybe you run out of disk space.
If I'm going to keep a log of my exception, I'll do it for >100 exception and log these locally in a format which I can write a script to analyse and clear out, running in my own dev environment. I don't want my code to break when their soap daemon dies - I mean, whose going to log 'that' exception?!!
I think every freshman computer science major has spent hours waiting for Microsoft to get back to them after submitting an error report on their crashed program. This will probably work the same way.
I assume you test every single app you EVER come across, or do you use a divining rod?
I never said I test everything. But judging the quality of a product by the HTML validity of the vendor's web page is dumb.
man, your text sounds like an attempted advert for a crappy service (for real)
I hope they don't try to patent this feature. Because I implemented it in 1997, as did several other consultancies building Java (and other) based websites for distributed companies. It is cool, though, if I do say so myself.
--
make install -not war
Thought this was an article about drugs. Wow, the lengths people go to get high.
Can we please stop having to read "free (as in beer)"?
Its getting old and noone with two half brains in their head uses it.
I don't know about you, but noone in tech I know is as much as an alcoholic as it takes to understand that reference.
I don't know about you guys, but I don't have any bugs in my code. It works perfectly the first time. No doubt. Never happens. Nothing ever breaks. Ever.
p utStream.java:215)p utStream.java:134)j ava:139)j ava:90)1 07)j ava:70)o yment(DeployerService.java:213)r vice.java:430)S ervice.java:1407)e ployerService.java:872)c e.java:890)c hedulerService.java:223)u nnable(ThreadPool.java:426)a :66)
hah.
so there.
at java.util.zip.InflaterInputStream.fill(InflaterIn
at java.util.zip.InflaterInputStream.read(InflaterIn
at java.util.zip.ZipInputStream.read(ZipInputStream.
at java.io.FilterInputStream.read(FilterInputStream.
at jrunx.util.JarUtils.expandJar(JarUtils.java:110)
at jrunx.util.JarUtils.expandJar(JarUtils.java:142)
at jrunx.util.URLUtil.makeExpandedCopy(URLUtil.java:
at jrunx.util.URLUtil.makeExpandedLocalCopy(URLUtil.
at jrun.deployment.DeployerService.createWatchedDepl
at jrun.deployment.DeployerService.deploy(DeployerSe
at jrun.deployment.DeployerService.redeploy(Deployer
at jrun.deployment.DeployerService.redeployChanged(D
at jrun.deployment.DeployerService.run(DeployerServi
at jrunx.scheduler.SchedulerService.invokeRunnable(S
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeR
at jrunx.scheduler.WorkerThread.run(WorkerThread.jav
damnit
Who gives a shit?
Like I can't have my friggin program send an e-mail to wherever by adding a few lines of code.
Looks more like a free advertisement.
Do you even lift?
These aren't the 'roids you're looking for.
1) Users hardly ever report bugs themselves. Out of 21 bugs, only 2 were directly reported by a user.
2) I suck at this much more than I thought
As for information, the only information in the bug report that is useful is:
everything else is pretty useless.
I don't expect every company to have a perfect webpage. It'd probably be okay if Aunt Sally's Flower Shop's webpage wasn't perfect HTML. But then again, Aunt Sally isn't in the software business.
Any company in the software business should be capable of creating standards-compliant webpages for their products. It's not difficult to do, especially when verification services are available for free. It then becomes more a matter of care. Do they care enough to write quality code, be it their software product or their webpage?
I cannot trust any software company that cannot put together a decent, standards-compliant webpage. It's as simple as that. I want quality code, and if you cannot provide it for something as simple as a webpage, then I fail to believe that you can provide quality software products.
Cyric Zndovzny at your service.
XFire already quietly does this for any games it supports, though you'll find nothing on their web site about the service.
I wouldn't shop in a grocery store with faeces smeared all over the front windows and doors. Likewise, I will not deal with a software vendor who cannot create a standards-compliant webpage for their product(s).
It's a matter of projecting a good public image, in addition to paying attention to small details (which is essential when doing software development).
Cyric Zndovzny at your service.
Isn't this a poor man's very late copy of Dr. Watson which has been around for a number of years and is also free ... in addition to providing nice core dumps of the applications which crashed, whether they are MS or not.
MS seems to be first by quite a ways on this one.
Most uninspired troll ever. You deserve a prize.
because this lets the exception logger work anywhere where there is web access, and potentially allows exceptions to ultimately go into a database. Even if you are happy having all your exceptions in the form of email, each individual deployment would have to be configured for your customer's SMTP server, or else you'll point to your own SMTP server and probably run into issues of the outgoing SMTP port being blocked.
All the same, between security questions, and only storing the last 100 exceptions, I'd rather write my own Web Services exception handler.
Wooosh
Not sure if the world ends or what.
You bumbling idiot. Now explain to me what the 'optimal root' is, aka 'optimal superuser'.
Moron
As a case in point, Raats and Feddes refer to optimal root distributions and their effect on the mesoscopic scale interaction between root and ground water.
So, what we had suggested was that the bz2 compression process, compression ratios and resulting output would be analogous to the optimal-root (biomass), in the context of its osmotic interchange, growth-rates and the optimality of the resulting bio-tree.
In light of this, I believe that my previous comment still stands
. Sith scum-bag!
A quality solution will make good use of both exceptions and return values. Eschewing exception-based programming is rejecting powerful tools that have been made available for modern programming, allowing complex problems to be solved elegantly and in a logical, maintainable fashion.
My first example is a method that obtains the details on and individual and returns an object containing that information (name, birth, etc). The return value should be a typed object class to enforce proper communication with callers. If that method fails, it needs a way to signal the error state, why it failed, and perhaps even suggest some solutions (so an uninformed team member that is debugging will have some place to start). Since the return value type is a specific object class, the method may only return a valid object or a null value. It could return null indicating an error and forcing the caller to then query for the reason for the error, but this creates additional calls and complexity (which would be particularly poor when attempting to scale to a distributed application). The simpler solution is to throw a specially tailored exception of a type appropriate for the error. The exception can hold the reason for the error, the stack trace, suggestions on why it failed ("unable to contact server - make sure network connected"), etc. Now the caller can ask for an individual and receive it, confident that the returned object is indeed an individual, and if an error occurs, the exception can be caught and either passed up the chain, or handled on the spot with far more information than a single return code could provide.
My second example is a method that receives a few numeric values and returns a calculated integer, arrived at through some complex formula. There is a potential for errors to occur due to incorrect, invalid, or out of range input. The valid response could be any positive or negative integer, or zero. You could pre-test the values to validate them, but then either the caller has to understand what the method does (bad encapsulation), or you have to make separate call(s) to the object providing the method in order to first validate the input (bad scalability). Again the ideal solution is to simply validate the input within the method, throwing an error if it does not meet requirements, and otherwise computing the result (throwing math computation errors if any occur), returning the final value. If no error is thrown, your program continues along secure in the knowledge that the returned value is not an error code. If an error does occur, the caller can easily branch to the correct handler to tell the user the input was invalid, or log a math error, etc.
In my opinion, as a real professional, it is foolhardy to dismiss this very useful advancement in technology.
Finally, to respond to the original question, I agree with many of the other posts in that the control and service in question may be useful to save a few or several hours of work for small applications, but for any application that intends to be competitive, it would be better to self-host end-use error reporting services.