public class Ty
{
public static void main(String args[])
{
try
{
byte i=128;
}
catch (Exception e)
{
System.out.println("overflow");
}

}
}
//请问一下为什么不能捕获到这个益出异常呢?

解决方案 »

  1.   

    byte 是有符号的,当然不会异常了
      

  2.   

    不好意思,能说明白点吗,我刚开始学习java刚学到异常这一节.
      

  3.   

    128是个常量,是int类型的
    而lz定义的i是byte类型的
    把int类型赋值给byte类型的,这种赋值编译都不能通过
    如果你写成byte i = (byte) 128;实际上只i存的值是-128。
    int型的128是二进制 00000000 00000000 00000000 10000000,如果转换成byte,实际上就是取最后一个字节,即10000000,这实际上是byte型的-128。
    这里根本就不会有异常抛出。
      

  4.   

    1. 楼主充分利用论坛的方式对大家抢分太有帮助了2. 楼主所使用的java书籍写得的确是太NB了,PFPF