ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java的异常处理机制

2021-09-09 09:02:48  阅读:139  来源: 互联网

标签:Java 错误 处理 try catch 机制 异常 throw


						Java的异常处理机制

1、 java异常处理机制
java的异常处理机制可以让程序具有极好的容错性,让程序更加健壮。当程序运行出现意外情形时,系统会自动生成一个Exception对象来通知程序,从而实现将“业务功能实现代码”和“错误处理代码”分离,提供更好的可读性。
2、 异常发生原因
异常发生原因有很多,通常包含以下几大类:

  1. 用户输入了非法数据。
  2. 要打开的文件不存在。
  3. 网络通信时连接中断,或者JVM内存溢出。
    这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其他一些事因为物理错误引起的。
    要理解java异常处理是如何工作的,你需要掌握以下三种类型的异常:
  4. 检查性异常:最具代表的检查性异常是用户错误或问题引发的异常,这种程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单忽略。
  5. 运行时异常:运行时异常是可能被程序员避免的异常,与检查性异常相反,运行时异常可以在编译时被忽略。
  6. 错误:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。
    3、捕获异常
    Java异常处理机制为:抛出异常,捕抓异常,处理异常。
    通过使用try…catch来捕获异常,try…catch语法结构
    :try {
    //业务功能代码
    } catch(异常类1 e1) {
    //异常处理代码1
    } catch(异常类2 e2) {
    //异常处理代码2
    }…catch(异常处理n en) {
    //异常处理代码n
    }
    在使用try…catch捕获处理异常时需要注意:
  7. 不要过度使用异常,不能使用异常处理机制来代替正常的流程控制语句。
  8. 异常捕获时,一定要先捕获小异常,在捕获大异常。否则小异常将无法被捕获
  9. 避免出现庞大的try块
  10. 避免使用catch(Exception e){}
  11. 不要忽略异常
    4、 Exception类的层次
    所有的异常类是从java.lang.Exception类继承的子类
    Exception类是Throwable类的子类。除了Exception类外,Throwable还有一个子类Error。Java程序通常不捕获错误。错误一般发生在严重故障时,它们在java程序处理的范围之外。Error用来指示运行时环境发生的错误,例如,JVN溢出。一般的程序不会从错误中恢复。
    异常类有两个主要的子类:IOException类和RuntimeException类。
    5、 finally块
    finally块一般用来关闭物理资源(数据库连接、网络连接、磁盘文件等),这些物理资源必须显式关闭。除非在try块、catch块中调用了退出虚拟机的方法(System.exit(0);),否则不管在try块、catch块中执行怎样的代码,出现怎样的情况,异常处理的finally块一定会被执行。
    6、 使用throws和throw抛出异常
  12. throw
    java也允许程序自行抛出异常,自行抛出异常使用throw语句来完成(注意此处的throw没有后面的s)如果需要在程序中自行抛出异常,则应使用throw语句,throw语句可以单独使用,throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例
  13. throws
    使用throws声明抛出异常的思路是,当前方法不知道如何处理这种类型的异常,给异常应该由上级调用者处理;如果main方法也不知道如何处理这种类型的异常,也可以使用throws声明抛出异常,该异常将交给JVM处理。JVM对异常的处理方式是,打印异常的跟踪栈信息,并中止程序运行。

标签:Java,错误,处理,try,catch,机制,异常,throw
来源: https://blog.csdn.net/HDW1203/article/details/120193504

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有