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

原创
2018/07/17 15:25
阅读数 140

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。常见的三种异常类型有:

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

    所有的异常类是从 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 代码块,它的最简单的用法为:

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{}

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

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部