Java语言学习(九):异常处理

    异常是程序中的一些错误,但并非全部的错误都是异常,而且错误有时候是能够避免的。常见的三种异常类型有:java

  • 检查性异常,如打开一个不存在的文件
  • 运行时异常,如数组越界
  • 错误,如栈溢出

    全部的异常类是从 java.lang.Exception 类继承的子类,Exception类是Throwable 类的子类,以下图所示:数组

 

    常见的非检查性异常有:数组下标越界异常ArrayIndexOutOfBoundsException、空指针异常NullPointerException等,检查性异常有:类未发现异常ClassNotFoundException,表示应用程序试图加载类时,找不到相应的类,NoSuchMethodException表示请求方法不存在等等。指针

    捕获异常,以下实例:调试

FileInputStream fis = null;
try{
   File file = new File("d:\\a.txt");
   fis = new FileInputStream(file);
}catch(FileNotFoundException e){
   e.printStackTrace();
}finally{
   try{
      fis.close(); //释放资源
   }catch(IOException e){
      e.printStackTrace();
   }
}

    上面实例中使用的捕获异常的方式是:try/catch 代码块,它的最简单的用法为:code

try
{
   // 程序代码
}catch(ExceptionName e1)
{
   //Catch 块
}

    固然,也能够使用多重捕获块,即后面有多个catch块,匹配不一样的异常,finally块属于可选部分,不管是否发生异常,该代码块总会被执行,这里可用来运行清理类型等收尾善后性质的语句,如资源的释放等。继承

    若是一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。也能够使用 throw 关键字抛出一个异常,仅可应用在方法体中,不管它是新实例化的仍是刚捕获到的。用法以下:资源

//throws用法
public void Fun() throws Exception{
    //throw用法
    new throw Exception();
}

    除了Java中提供的异常类,咱们也能够自定义异常类,须要继承Exception类或者Exception的子类。最简单的自定义异常类以下:字符串

public class FunException extends Exception{}

    在类中能够提供一个无参构造方法和一个字符串参数的构造方法,方便输出调试信息。io

相关文章
相关标签/搜索