Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #37933
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Unexpected Boxing Error at Runtime |
| Date | 2018-01-07 20:06 -0500 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <p2ug70$1hdl$1@gioia.aioe.org> (permalink) |
| References | (3 earlier) <p2m3np$2h4$1@dont-email.me> <p2m48h$149e$1@gioia.aioe.org> <p2o4ba$46d$1@dont-email.me> <7mev4dhc2dj9l1i2j8f6n0bn5a6s2f56ko@4ax.com> <p2olhr$75l$1@dont-email.me> |
On 1/5/2018 2:59 PM, Daniele Futtorovic wrote:
> On 2018-01-05 18:51, Gene Wirchenko wrote:
>> VB 6 defaulted to checking for overflow; this might have just
>> been for integer types. I liked that. It is far better to find out
>> about the error sooner rather than later if ever.
>
> YMMV. If I use an integer, I know it might overflow. If I don't want
> that, I'll guard against it. I find it borderline insulting when the
> language takes that decision away from me. What help is the exception
> gonna be in making the program recover, anyway? Yes, it will help to
> detect the error. But that only means one hasn't thought things through
> in the first place.
I like C# with the check enabled.
using System;
namespace E
{
public class Program
{
private static void Avg(int a, int b)
{
Console.WriteLine("Average of {0} and {1} is {2}", a, b, (a
+ b) / 2);
}
public static void Main(string[] args)
{
Avg(123, 456);
Avg(int.MaxValue, int.MaxValue);
Console.ReadKey();
}
}
}
What is best:
Average of 123 and 456 is 289
Average of 2147483647 and 2147483647 is -1
or:
Average of 123 and 456 is 289
System.OverflowException: Arithmetic operation resulted in an overflow.
?
If one really need the integer overflow to work then it is actually
still possible by making it explicit.
(I had big problems coming up with an example where it make sense
to overflow, but ...)
using System;
using System.Text;
namespace E
{
public class Program
{
private static int[] Encrypt(int[] a, int k)
{
int[] res = new int[a.Length];
for(int i = 0; i < res.Length; i++)
{
unchecked
{
res[i] = a[i] + k;
}
}
return res;
}
private static int[] Decrypt(int[] a, int k)
{
return Encrypt(a, -k);
}
private const int KEY = 123456789;
public static void Main(string[] args)
{
int[] a1 = { int.MinValue, -1, 0, 1, int.MaxValue };
int[] a2 = Encrypt(a1, KEY);
int[] a3 = Decrypt(a2, KEY);
for(int i = 0; i < a1.Length; i++)
{
Console.WriteLine("{0} -> {1} -> {2}", a1[i], a2[i],
a3[i]);
}
Console.ReadKey();
}
}
}
works fine even with the check enabled due to the:
unchecked { }
block.
I think this is the right way. Check by default and have a way
to disable the check for specific code sections where it is
needed.
Arne
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Unexpected Boxing Error at Runtime j4n bur53 <janburse@fastmail.fm> - 2018-01-04 15:16 +0100
Re: Unexpected Boxing Error at Runtime Eric Douglas <e.d.programmer@gmail.com> - 2018-01-04 07:04 -0800
Re: Unexpected Boxing Error at Runtime Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-01-04 10:13 -0500
Re: Unexpected Boxing Error at Runtime Eric Douglas <e.d.programmer@gmail.com> - 2018-01-04 08:01 -0800
Re: Unexpected Boxing Error at Runtime Marcel Mueller <news.5.maazl@spamgourmet.org> - 2018-01-04 18:33 +0100
Re: Unexpected Boxing Error at Runtime Kiwi User <martin@mydomain.invalid> - 2018-01-04 19:29 +0000
Re: Unexpected Boxing Error at Runtime Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-01-04 15:09 -0500
Re: Unexpected Boxing Error at Runtime Daniele Futtorovic <da.futt.news@laposte.net> - 2018-01-04 21:43 +0100
Re: Unexpected Boxing Error at Runtime Arne Vajhøj <arne@vajhoej.dk> - 2018-01-04 15:53 -0500
Re: Unexpected Boxing Error at Runtime Daniele Futtorovic <da.futt.news@laposte.net> - 2018-01-05 16:06 +0100
Re: Unexpected Boxing Error at Runtime Gene Wirchenko <genew@telus.net> - 2018-01-05 09:51 -0800
Re: Unexpected Boxing Error at Runtime Daniele Futtorovic <da.futt.news@laposte.net> - 2018-01-05 20:59 +0100
Re: Unexpected Boxing Error at Runtime Eric Douglas <e.d.programmer@gmail.com> - 2018-01-05 12:15 -0800
Re: Unexpected Boxing Error at Runtime Kiwi User <martin@mydomain.invalid> - 2018-01-05 21:52 +0000
Re: Unexpected Boxing Error at Runtime Gene Wirchenko <genew@telus.net> - 2018-01-08 11:13 -0800
Re: Unexpected Boxing Error at Runtime Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-01-05 16:27 -0500
Re: Unexpected Boxing Error at Runtime Daniele Futtorovic <da.futt.news@laposte.net> - 2018-01-06 00:06 +0100
Re: Unexpected Boxing Error at Runtime Kiwi User <martin@mydomain.invalid> - 2018-01-05 23:57 +0000
Re: Unexpected Boxing Error at Runtime Arne Vajhøj <arne@vajhoej.dk> - 2018-01-07 20:06 -0500
Re: Unexpected Boxing Error at Runtime bursejan@gmail.com - 2018-01-08 04:10 -0800
Re: Unexpected Boxing Error at Runtime bursejan@gmail.com - 2018-01-08 04:31 -0800
Re: Unexpected Boxing Error at Runtime Daniele Futtorovic <da.futt.news@laposte.net> - 2018-01-08 16:25 +0100
Re: Unexpected Boxing Error at Runtime Arne Vajhøj <arne@vajhoej.dk> - 2018-01-08 20:05 -0500
Re: Unexpected Boxing Error at Runtime bursejan@gmail.com - 2018-01-08 17:55 -0800
Re: Unexpected Boxing Error at Runtime Gene Wirchenko <genew@telus.net> - 2018-01-08 11:19 -0800
Re: Unexpected Boxing Error at Runtime Daniele Futtorovic <da.futt.news@laposte.net> - 2018-01-08 20:40 +0100
Re: Unexpected Boxing Error at Runtime Gene Wirchenko <genew@telus.net> - 2018-01-08 18:03 -0800
Re: Unexpected Boxing Error at Runtime Daniele Futtorovic <da.futt.news@laposte.net> - 2018-01-16 02:33 +0100
Re: Unexpected Boxing Error at Runtime bursejan@gmail.com - 2018-01-22 14:26 -0800
Re: Unexpected Boxing Error at Runtime bursejan@gmail.com - 2018-01-22 14:33 -0800
Re: Unexpected Boxing Error at Runtime Arne Vajhøj <arne@vajhoej.dk> - 2018-01-04 19:16 -0500
Re: Unexpected Boxing Error at Runtime Kiwi User <martin@mydomain.invalid> - 2018-01-05 12:17 +0000
Re: Unexpected Boxing Error at Runtime j4n bur53 <janburse@fastmail.fm> - 2018-01-05 00:13 +0100
Re: Unexpected Boxing Error at Runtime Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-01-05 11:05 -0500
Re: Unexpected Boxing Error at Runtime bursejan@gmail.com - 2018-01-06 06:18 -0800
csiph-web