异常

在程序运行过程中,意外发生的情况,背离我们程序本身的意图的表现,都可以理解为异常。

  • 异常分类

    1. Error(错误)

    2. Exception(异常)

      异常分类

    注意:

    • 对于可查异常必须捕获或者声明抛出。
    • 允许忽略不可查的RuntimeException(含子类)和Error(含子类)。
  • 异常处理

    五个关键字:try、catch、finally、throw、throws

    • 捕获异常:try、catch、finally
    • 声明异常:throws
    • 抛出异常:throw
  • try-catch-finally

    try块后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。

    1
    2
    3
    4
    5
    6
    7
    try{
    // 捕获异常
    }catch(){
    // 处理异常
    }finally{
    // 最后必执行这里的代码
    }

    System.exit(1):终止当前程序。

  • throw和throws

    1. throws:在方法定义时声明该方法要抛出的异常类型

      1
      2
      3
      public void method() throws Exception1,Exception2,...{
      //可能产生异常的代码
      }
    2. throw用来抛出一个异常

      如:throw new IOException();

      throw抛出的只能够抛出类Throwable或者其子类的实例对象。

      如:throw new String(“ss”);是错误的。

      throw抛出异常对象的处理方案:

      1. 通过try…catch包含throw语句–自己抛自己处理
      2. 通过throws在方法声明时抛出异常类型–谁调用谁处理,调用者可以自己处理也可以继续向上抛出。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      public void method(){
      try{
      //代码段1
      throw new 异常类型();
      }catch(异常类型 ex){
      //对异常进行处理的代码段2
      }
      }

      public void method() throws 异常类型{
      //代码段1
      throw new 异常类型();
      }
  • 自定义异常

    所谓自定义异常,就是定义一个类,去继承Throwable类或者它的子类。

    1
    2
    3
    4
    5
    public class TestException extends Exception{
    public TestException(){
    super("XXX");
    }
    }

包装类

使数据类型获得属性、方法,对象化交互。

拆箱:包装类->基本数据类型

装箱:基本数据类型->包装类

基本数据类型转换为字符串:包装类中的toString方法实现。

字符串转换为基本数据类型:包装类中的parseInt、valueOf等方法实现。

  • 注意

    1. “==”只能比较两个对象地址是否相同。
    2. “equals”比较两个对象的值是否相同。
    3. 自动装箱时,整型数据位于-128到127之间,则会九年如缓存区(对象池),下一次装箱时如果缓存区中有该对象则直接引用。如果没有则实例化对象。(double和float不具有缓存区)。

字符串

网络中传输都是二进制数据。

  • String常用方法

    String常用方法

  • String和StringBuilder、StringBuffer的区别

  • String具有不可变性,StringBuilder、StringBuffer不具备

  • 建议:当需要频繁操作字符串时,应使用StringBuilder、StringBuffer。

    • StringBuffer线程安全,性能略低;StringBuilder线程不安全,但性能略高。