SCJP中抛出异常和编译失败的总结

  月底就要考SCJP了,发现其中有关抛出异常和编译失败的习题较难把握。故总结一下,希望对要考SCJP的朋友有所帮助。

  1.当用正则表达式时,如果不是在命令行输入正则,则对元字符的一次转义会编译失败,应该两次转义。eg"//s"

  2.当目录不存在时,引用该目录创建文件则会抛出IO.Exception

  eg: File dir=new File("dir");

    File text=new File(dir,"text1.text");

    text.creatNewFile();//此句会抛出异常,注意区别当构造流的时候,如果没有文件则会自动创建个文件。

  3.如果一个目录非空,则不能删除它,否则会抛出异常。

  4.当序列化一个A类对象时,如果A中有没有实现Serilizable接口,且没有用transient修饰则会抛出NotSerializeableException

  5.在格式化类(XXXFormat)Parse()方法中,如果所给String参数格式不符则会抛出ParseException

  6.在包装器类的Parse()方法中,如果所给String参数格式不符则会抛出NumberFormatException

  7.必须在同步代码块中调用wait()notigy()方法如果调用wait()方法的对象不带有锁则会抛出IllegalMonitorStateException(非检验异常).

  8.在同一个继承树中,如果把一个父类的对象强制转换成子类,则会通过编译,但运行时会会抛出ClassCast异常。如不是同一个继承树中对象转换则不会通过编译。

  9.如果在静态初始化块中出现错误则会抛出ExceptionInInitilizerError

  10.如果一个对象为null,则对其的非赋值操作会抛出NullPointerException

  11.Switch/case语句中,switch()中的变量不能隐试转换成int型或是枚举类型,或switch(a)/case(b)如果b的范围大于a的范围则会编译失败。

  12.当断言中的条件为false时组会抛出AssertionException

  13.DateFormateNumberFormate只有在实例化时才能指定地区设置,如果其他时候改变则编译失败。

  14.TreeSetTreeMap中调用subxxx()方法时候,如果字串中添加超出了范围则会抛出异常。

  15.在局部方法内部类中如果要访问的局部变量未被final修饰则编译失败。

  16.匿名内部类中调用自己创建的方法则会编译失败。

    eg:   Class P{}

      Class Sub

      {

         P p=new P(){void newmethod(){}};
        p.newmethod();//此处错误。

      }  

  17.如果一个线程已经调用了start()方法启动了,则再次调用start()方法会抛出IllegalThreadStateException

  1.Console类的对象是通过System.Console()来获取,用new会编译失败。

   2.Console类的readPassWorld()方法返回的是一字节数组,当用String接收时会编译失败。

  3.A和类B位于不同包中,A类中有受保护的方法、变量,则当类B继承类A时可以通过继承访问类A的受保护的方法和变量,如果通过A的对象的引用来访问则会编译失败。

  4.重写final修饰的方法会编译失败。

  5.局部变量为赋初值,编译失败。

  6.子类重写了父类的方法且比父类有更严格的访问限制则编译失败。

  7.A中有抛出异常的方法,类B继承A重写了该方法且不抛出任何异常,则在通过A的引用构造的B对象时,调用该方法必须处理异常,否则编译失败。

  8.静态方法中访问非静态变量,编译失败。

   暂时总结这些。有些简单的没有写出,希望对大家能有帮助,大家都Happy过SCJP。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值