zoukankan      html  css  js  c++  java
  • Java异常处理

    1. 异常分类

      

      Java中所有的异常类都派生于Throwable类,Throwable类有子类Error和Exception类。其中Error表示Java运行时系统的内部错误,Exception表示程序运行异常。Exception的子类又分为两大类:RuntimeException类和其他异常类,RuntimeException表示程序的逻辑错误,如:NullPointerException;其他异常表示外部异常条件引起的错误,如:IOException。

      Java将异常分为已检查异常和未检查异常,未检查异常包括Error和RuntimeException,已检查异常包括其他Exception。未检查异常表示该种错误要么无法由程序员控制(Error),要么程序员完全应该避免(RuntimeException)。而已检查异常表示由外部条件引发的错误,Java的异常处理机制主要是为了处理已检查异常。

    2. 覆盖与异常

      子类想要覆盖父类中的一个方法,如果父类中该方法没有抛出异常,则子类中的新方法也不能抛出异常;如果父类中该方法抛出异常,则子类中可以不抛出异常,若抛出异常,则要求子类中方法抛出的异常范围不超过父类中方法抛出的异常。

    3.finally子句

      finally子句表示不管try块中是否发生异常,都会执行finally块中的代码。finally通常用来释放程序中需要手动释放的资源,如:关闭文件,关闭数据库连接等。例:

    try
    {
      try
      {
         input.read(.....); 
    return 1; }
    finally { input.close();
    return 2; } }
    catch(IOException e) { e.printStackTrace(); }

      需要注意的是,上面的例子中,里面的try语句只有finally子句,实际上这是合法并且推荐的方式,表示该try语句的目的就是为了释放资源,并且,很多情况下,finally子句中的代码有可能会抛出异常。

      假设try语句中包含return语句,而finally子句中也包含return语句,则finally中的return语句会覆盖try语句中的返回值。

    参考资料 《Java核心技术》  

  • 相关阅读:
    SpringBoot集成Shiro 实现动态加载权限
    docker 常用命令 以及常见问题
    sql小知识点
    下载文件时-修改文件名字
    关于.net导出数据到excel/word【占位符替换】
    常见js报错
    .net core api +swagger(一个简单的入门demo 使用codefirst+mysql)
    .net core +codefirst(.net core 基础入门,适合这方面的小白阅读,本文使用mysql或mssql)
    基础测试jmeter5.0+badboy(从小白到入门)
    关于ef+codefirst+mysql/dapper(dbFirse)(入门)
  • 原文地址:https://www.cnblogs.com/jqctop1/p/4690919.html
Copyright © 2011-2022 走看看