黑马程序员技术交流社区
标题:
强制转换溢出异常
[打印本页]
作者:
冯瀚冰
时间:
2012-4-7 17:53
标题:
强制转换溢出异常
比如 byte a= (byte) 5000;一定是溢出的,但是运行后会给个结果,能用异常机制报个错吗?
作者:
贠(yun)靖
时间:
2012-4-7 18:04
可以的,加个判断句就行了 但是你要强转的数就要用一个变量代替了
int b = 5000;
if (b>127)
throw new 自定义异常 或者 RuntimeException都行
byte a = (byte)b;
作者:
冯瀚冰
时间:
2012-4-7 18:06
必须判断一下吗?如果没考虑到这个还有办法吗?
作者:
薛飞飞
时间:
2012-4-7 19:00
直接放try{}catch(){}语句里不就可以了吗
作者:
郑苑东
时间:
2012-4-7 21:05
本帖最后由 郑苑东 于 2012-4-7 21:09 编辑
可以。。。而且这个你强制转换后只会是损失了精度。。不会报错。。因为你已经强制转换了。。。所以可以使用if来判断当他超出边界时。。用throw抛出一个运行时异常(RuntimeException),,,也可以是继承了RuntimeException异常的一个子类。。只有继承了RuntimeException的类才不会在编译时就提示异常。。只会是运行时的异常。。
byte的边界是-128到127可以使用if语句判断。。使用try。。catch。。不行因为你已经强转了。。。。5000的二进制位1001110001000。。而byte只能放下。一个字节也就是最后的10001000.。要得到他的十进制要先取反。。01110111.。然后加1.。。01111000.。。当然得到的二进制数转换成十进制数后要加-号。。所以是-120.。。
作者:
pray
时间:
2014-4-26 04:21
孙悟空对铁扇公主说道:好嫂子,我的牛魔王大哥在家吗?铁扇公主不悦道:孙猴子!你大晚上来找我,你大哥在家的话,我敢给你开门吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2