|
When you have a series of
try { dosomething() } catch {}
statements in a row then on error resume next is a wonderful syntactic sugar to clean up your code. And yes, there are places where this syntax is appropriate.
|
|
|
|
|
That syntax is never appropriate, because you are swallowing exceptions and have no way to find out they occurred, much less what might have caused them.
At the very least, log the error detail before you swallow it - but then it wouldn't be On Error Resume Next , would it ...
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
OriginalGriff wrote: is never appropriate
Uh, no. But there should be a comment to state that it is appropriate for that code.
Some of what I'm doing now is ignoring Exceptions because that's what works best.
Just yesterday I wrote:
try
{
this.buffer.Append ( Char ) ;
}
catch ( System.ArgumentOutOfRangeException )
{
}
Which allows the caller to provide a limit to how many characters are allowed in the StringBuilder as appropriate.
Yes, this is not a catch-all, but I have those as well as appropriate.
|
|
|
|
|
And what you are doing is not On Error Resume Next either: you are ignoring a specific error, and marking why in the code. I do the same under some circumstances.
That's not the same as a blanket "Ignore all errors from now on", or putting try...catch() around each line of code!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
OriginalGriff wrote: have no way to find out they occurred
not true, in code with "on error resume next" you can check err.number to see if it is non zero after every statement if you want and also access the error description
you can then clear the error (err.clear) and carry on
it is a useful tool if used properly
|
|
|
|
|
I was literally reading to see that someone added this.
This is EXACTLY true, and the right way to proceed. in fact, in debugging, we would paste in a block to help us iterate out and determine which errors to trap! It wasn't always 5... LOL
|
|
|
|
|
VB is still far better at parsing stringly typed data sets than any other language. The C* functions in VB hide hundreds of lines of code complexity for parsing strings into fundamental data types.
|
|
|
|
|
Probably not something I would use.
In my opinion, the one thing VB does better than C# is how Extension Methods are defined.
|
|
|
|
|
Agreed. VB wasn't perfect for ~everything~ but it was Rapid Application Development at its best. The massive simplification of otherwise gangly code with all of it's built in functions is what made it so friggin' popular. VB6 was the most used programming language on the planet when MS pulled the plug and VB.NET was in the top 3 when MS just started drifting away from supporting it. Amazing how you can have a product so popular and just chuck it...twice. Dumping the language like that is what makes me not trust investing time learning and collecting code for anything proprietary to MS. No customer loyalty.
|
|
|
|
|
It's more down to the editors and compilers supporting the language.
I could undoubtedly compile my own VB files and run them on .NET 6 (I'm assuming the resulting MSIL will run fine, but it isn't guaranteed as Microsoft seems to have dropped support).
However, Visual Studio doesn't support VB projects anymore, so I'd have to do it all manually, which is a pain, and not viable for a professional project.
And, as said, it's not VB.NET generating the MSIL, but the compiler, and when Microsoft drops support for that, it could be possible that VB.NET becomes incompatible with newer versions of the framework.
|
|
|
|
|
I have VS 2022 and it supports VB.
|
|
|
|
|
Visual Studio does support VB.Net - but it has never supported VB (Visual Basic 6, Visual Basic 5, etc.).
|
|
|
|
|
was it ever alive ? dat it da question.
CI/CD = Continuous Impediment/Continuous Despair
|
|
|
|
|
Judging from the amount of VB code that's still around it was very much alive.
|
|
|
|
|
It pioneered component (vs object) oriented development; a pattern which is useful today.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Quote: It pioneered component (vs object) oriented development; a pattern which is useful today.
I'm pretty certain that it did not; unless my memory is failing me (and at this age that is very possible), components were part of the Windows tech stack since '92 (COM and/or OLE). VB, like other Windows programming language tools, could use them.
IOW, they were installed with Windows, not with VB. VB was just the most popular way of writing Windows programs for well over a decade.
|
|
|
|
|
Component-based "architecture" was about reuse; not "COM" or "OLE" in particular.
VB was popular because of drag and drop (components).
The "RecordSet" (a component) was fundamental to sane client-server development.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
I used DragNDrop in a Windows Forms project using VB.Net (which will also work using C#). It's definitely a nice feature.
|
|
|
|
|
Quite a few folks don't know that MarshalByReferrence has been around for decades all the wat back to the Win 9X days... And everyone has forgotten the real roots in COM!
|
|
|
|
|
VB is among the walking dead of programming languages. Ruby is its sidekick. There's undoubtedly more.
|
|
|
|
|
Sometimes I feel like I am beating a dead Horse.
First, Haters are going to hate.
Second, programmers, for the most part, like and defend the language they know best, and disparage almost every other.
Third, VB isn't "cool" anymore.
Fourth, the main problem with VB is the word "Basic" in the name. Particularly the "B" which stands for "Beginners".
For Sander. No, it is not dead. See steveb's post above about MSIL.
For Griff I sincerely, greatly appreciate your knowledge, wisdom, and the fact you help a whole lot of people in this site, myself included.
However, if you don't like "OnError Resume Next", or "OnError GoTo" (which is also found in C#), then DON'T USE THEM.
Saying that VB should be dropped because of those statements, is like saying all tigers, extremely beautiful animals, should be killed because they might bite your head off when you try to pet them. Or saying that most women should be killed because they are a PITA.
IMO this is not only foolish, but ridiculous.
Finally, I am pretty sure that quite a lot of businesses are still using VB6 and VB.net to run their business, if not the majority. And I apologize for not being one of the "cool kids" and being subject to my second observation above myself.
Sometimes one man's trash is just trash, but not in the case of VB.
|
|
|
|
|
I think Sanders point was that the tooling for VB.Net is lagging behind the more main stream c#. And yeah lots of people like to kick the old VB dog but there are also a lot of us that cut our teeth on it.
I got a hell of a shock a few years ago when I tried to show a newbie (school kid) how vb worked, I could it even connect to the database it had changed so much.
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
Yeah, I agree with you on all points.
Slow Eddie wrote: For Sander. No, it is not dead. See steveb's post above about MSIL. See my reply though.
The tooling seems to lag behind and Microsoft seems to not update VB anymore, making the gap with C# even bigger in the future.
Sure it's not "dead" because many people and companies still use it, but it doesn't seem like a good alternative for new development anymore.
In the end, VB.NET can do everything C# can (or it could a few years ago) and you can write good and bad code in both languages, but how long will this be true?
So by "dead" I mean Microsoft isn't actively developing it anymore, making it a no-go for new development.
|
|
|
|
|
I agree that that is no good reason to hate a language.
I remember having to do some changes in a VB6 project many many years ago, there was a dynamic form, which means that when the user chooses a value from a combobox than some controls could be created at runtim (depending on the choice)
I don't remember if it gave a compile error or a runtime error, what I do remember is that it did not worked as we expected, so we called for microsoft support which the company paid for.
Their answer was that this is by design, VB did not allow creating controls in the closeup event of a combobox...
I did not liked the language before this, but at that time I did became a real hater.
There are so many examples of stuff in this language that was unbelievable, there are so many reasons not to like it.
But agreed, the reasons you mention are not reasons to hate it.
|
|
|
|
|
I believe the largest "railroad" in North America runs COBOL and IMS for it's backend and VB for it's front end (because I worked on that project and can't see the effort required to change).
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|