个人学习---Java异常

Java异常

异常机制

在实际应用中,异常是个高频热词,比如:用户的输入不符合要求;打开文件,文件却不存在或格式不对等。

异常(Exception)大致分为检查性异常运行时异常。检查性异常是指由于用户错误或问题而引起的异常,编译时不能简单地忽略。运行时异常,由于程序逻辑错误而引发,与编程人员相关,编译时可被忽略。

在Java中,定义了一个基类:java.lang.Throwable 作为所有异常的超类(最顶层的类)。因此,异常也被当作对象来处理

常见的异常分类,如下图所示。

个人学习---Java异常_第1张图片

补充:错误(ERROR),不是异常

错误

错误类对象由Java虚拟机(JVM)生成并抛出,大多数的错误与编程人员的操作无关。

常见的错误有:OutOfMemoryError --> JVM内存不足、NoClassDefFoundError-->定义错误、LinkageError-->链接错误等。

错误通常是灾难性的致命错误,是程序无法控制和处理的,当出现这种情况时,Java虚拟机一般会选择中止线程。

异常

运行时异常是不检查异常,程序中可以选择捕获处理或者不处理。异常通常情况下是可以被程序处理的,并且在程序中应该尽可能地去处理这些异常。

异常处理机制

异常处理机制可分为两类:抛出异常捕获异常

捕获异常

捕获异常的关键字有:try、catch、finally

try --> 创建了一片监控区域 :监控其中的方法使用是否存在异常。

catch --> 捕获异常 :捕获想要捕获的异常,并对所捕获的异常进行相关操作。

finally --> 处理善后工作 :如IO流、资源的关闭。

注:finally无论是否有异常,都会执行!!!

具体捕获异常方法,如下图所示。

个人学习---Java异常_第2张图片

catch( ){ }也可以书写多个,但要注意层层递进,大异常写下面。如下图所示。

个人学习---Java异常_第3张图片

注:可使用ctrl + alt + t自动生成try/catch/finally结构,如下图所示。

个人学习---Java异常_第4张图片

补充:

  • .printStackTrace()方法可用于打印错误栈信息。

  • System.exit(参数)可用于程序结束。其中参数0表示正常退出程序,即:按照我们预想的执行,最后停止程序。参数1(或其他非0参数)表示非正常退出程序,如:当捕获到异常,需要停止程序。一般来说,catch块中使用System.exit(1)来退出。

抛出异常

抛出异常的关键字有:throw、throws

throw --> 在方法中主动抛出异常,可以在方法中使用try-catch语句来捕获异常。 如下图所示。

个人学习---Java异常_第5张图片

throws --> 方法中处理不了这个异常,就从这个方法的声明处通过throws关键字指明要抛出方法调用者的异常,之后在出现异常方法的调运处中捕获并处理该异常。 如下图所示。

个人学习---Java异常_第6张图片

自定义异常

用户自定义异常类,只需要继承Exception类即可。如下图所示。

个人学习---Java异常_第7张图片

使用自定义异常,具体效果如下所示。

个人学习---Java异常_第8张图片

总结

  1. 对于异常,应该合理规避的同时使try-catch语句因地制宜的辅助处理。

  2. 在多重catch块后,用一个catch大异常来处理可能会被遗漏的异常。

  3. 对于不确定的代码,也可以加上try-catch来处理潜在异常。

  4. 尽量添加finally语句块来释放占用资源。

你可能感兴趣的:(开发语言,java,学习)