当前位置: 首页 > 图灵资讯 > 技术篇> 异常的基本用法

异常的基本用法

来源:图灵教育

  异常分类:

  所有异常java.lang.Exception类继承的子类

  Exception分为(1)RuntimeException运行异常:NullPointerException、Clascascastexception等。,包括错误类型转换、数组访问越界、访问空指针;(2)检查异常CheckedException

  CheckedException:

异常的基本用法_抛出异常

  unchecked exception:

异常的基本用法_异常类型_02

  2、处理异常

  2.1try-catch

  捕获异常的第一步是用try{..}句块选择捕获异常的范围,并在try句块中放置可能出现异常的代码。在执行过程中,一旦出现异常,就会生成一个对应的异常对象,并根据该对象的类型进行匹配。try中的异常对象一旦匹配到某个catch,就会进入catch进行异常处理Q,一旦处理完成,就会跳出当前的try-catch结构(不写finally)。继续执行后续代码。try结构中声明的变量在try结构出来后就不能调用了。在catch语句块中,是处理异常对象的代码。每个try句块可以伴随一个或多个catch句子来处理不同类型的异常对象。如果catch中的异常类型没有子父关系,则声明的顺序无关紧要。如果异常类型符合子父关系,则要求子女必须在父亲上声明,否则会报告错误。

异常的基本用法_父类_03

  finally

  捕获异常的最后一步是通过finally语句为异常处理提供统一的出口,使程序的状态在控制转移到程序的其他部分之前得到统一的管理。无论try代码块中是否发生异常事件,catch语句是否执行,catch语句是否异常,catch语句中是否有return,finally块中的语句都将执行。finaly声明代码必须执行,即使catch中有异常,try中有return语句,catch中有return语句 return语句等。任选finally语句和catch语句。JVM不能自动回收数据库连接、输入输出流、网络编程socket等资源,我们需要手动释放资源。此时,资源的释放需要在finaly中声明。

  2.2throws,throw

  声明抛出异常是Java处理异常的第二种方法,throwsQ+异常类型写在方法的声明中,当该方法执行时,可能会抛出类型。如果一种方法(语句执行)可能会产生某种异常,但不能确定如何处理异常,则该方法应明确声明抛出异常,表明该方法不会处理这些异常,并由该方法的调用器处理。在方法声明中,throws语句可以声明抛出异常列表,throws背后的异常类型可以是方法中产生的异常类型,也可以是其父类。当方法体执行时,出现异常时,仍会在异常代码处生成异常类对象,这个对象满足throws后,异常类型就会被抛出。不再执行后续代码的异常代码。

  eg:public Image loadImage(String s)

  throws FileNotFoundException, EOFException

  throw手动抛出异常。当程序执行过程中出现异常时,java异常对象可以由系统自动生成并抛出,也可以根据需要手动创建和抛出。首先生成异常对象,然后通过throw句实现抛出操作。throw的方法只是将异常抛给方法的调用者,而不是真正处理异常,而是将异常交给方法的调用者。

  eg:String readData(Scanner in) throws EOFException{

  while(...){

  if(!in.hasNext())// EOFencountered

  {

  if(n

  throw new EOFException();

  return s;

  }

  2.3处理unchecked异常

  编译时不会检查unchecked异常,这意味着即使您没有声明或处理异常,您的程序也会抛出unchecked异常,程序不会给出编译错误。在大多数情况下,这些异常是由于用户在交互过程中提供的坏数据。这就要求程序员提前判断这种异常情况并妥善处理。也可以使用throws声明或try/catch捕获unchecked异常,但大多数时候不需要,也不应该这样做。uncheckedexception不需要显式处理客户端代码,他们会在出现的地方挂起程序,打印异常信息。充分利用JavaAPI中提供的丰富uncheckedexception,如nullpointerexception、illegalargumentexception、illegalstatexception等。,使用这些标准的异常类,而不需要创建新的异常类,使代码易于理解,避免过度消耗内存