A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯瀚冰 初级黑马   /  2012-4-7 17:53  /  1919 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

比如 byte a= (byte) 5000;一定是溢出的,但是运行后会给个结果,能用异常机制报个错吗?  

5 个回复

倒序浏览

可以的,加个判断句就行了 但是你要强转的数就要用一个变量代替了
int b = 5000;
if (b>127)
        throw new 自定义异常 或者 RuntimeException都行  
byte a = (byte)b;
回复 使用道具 举报
必须判断一下吗?如果没考虑到这个还有办法吗?
回复 使用道具 举报
直接放try{}catch(){}语句里不就可以了吗
回复 使用道具 举报
本帖最后由 郑苑东 于 2012-4-7 21:09 编辑

可以。。。而且这个你强制转换后只会是损失了精度。。不会报错。。因为你已经强制转换了。。。所以可以使用if来判断当他超出边界时。。用throw抛出一个运行时异常(RuntimeException),,,也可以是继承了RuntimeException异常的一个子类。。只有继承了RuntimeException的类才不会在编译时就提示异常。。只会是运行时的异常。。
byte的边界是-128到127可以使用if语句判断。。使用try。。catch。。不行因为你已经强转了。。。。5000的二进制位1001110001000。。而byte只能放下。一个字节也就是最后的10001000.。要得到他的十进制要先取反。。01110111.。然后加1.。。01111000.。。当然得到的二进制数转换成十进制数后要加-号。。所以是-120.。。
回复 使用道具 举报
孙悟空对铁扇公主说道:好嫂子,我的牛魔王大哥在家吗?铁扇公主不悦道:孙猴子!你大晚上来找我,你大哥在家的话,我敢给你开门吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马