JAVA异常处理
错错错
不善表演
都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,
展开
-
1.17 Java.util.logging:JDK自带记录日志类
每个初学者都很熟悉在有问题的代码中使用 System.out.println 方法在控制台打印消息,来帮助观察程序运行的操作过程。如果你使用 System.out.println 方法,一旦发现问题的根源,就要将这些语句从代码中删去。如果接下来又出现了问题,就需要再插入几个调用 System.out.println 方法的语句,如此反复,增加了工作量。日志用来记录程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题。下面介绍 Java 自带的日志工具类 java.util.logging 的使用。原创 2020-09-18 15:13:06 · 648 阅读 · 0 评论 -
1.16 Java的异常跟踪栈
异常对象的 printStackTrace() 方法用于打印异常的跟踪栈信息,根据 printStackTrace() 方法的输出结果,开发者可以找到异常的源头,并跟踪到异常一路触发的过程。看下面用于测试 printStackTrace 的例子程序。class SelfException extends RuntimeException { SelfException() { } SelfException(String msg) { super(msg);原创 2020-09-18 15:09:11 · 120 阅读 · 0 评论 -
1.15 异常处理规则
前面介绍了使用异常处理的优势、便捷之处,本节将进一步从程序性能优化、结构优化的角度给出异常处理的一般规则。成功的异常处理应该实现如下 4 个目标。使程序代码混乱最小化。捕获并保留诊断信息。通知合适的人员。采用合适的方式结束异常活动。下面介绍达到这种效果的基本准则。不要过度使用异常不可否认,Java 的异常机制确实方便,但滥用异常机制也会带来一些负面影响。过度使用异常主要有以下两个方面:把异常和普通错误混淆在一起,不再编写任何错误处理代码,而是以简单地抛出异常来代替所有的错误处理。使用原创 2020-09-18 15:04:52 · 160 阅读 · 0 评论 -
1.14 实例:完善除法运算的错误信息
本次实例的目的很简单,就是由用户输入两个数字,然后进行相除并输出结果。但是要求程序对除法运算过程中的各种异常进行捕捉并提示用户,例如除数是字符、被除数是零等。在这个实例中定义了一个数组来存放要执行运算的两个操作数,因此还需要对数组的索引越界异常进行处理,具体步骤如下。1)创建计算类 Compute,声明一个长度为 2 的 int 类型数组,接着编写 get() 和 set() 方法,代码如下:public class Compute { private int[] num = new int[原创 2020-09-18 14:53:03 · 274 阅读 · 0 评论 -
1.13 实例:验证用户名和密码
假设在某仓库管理系统的登录界面中需要输入用户名和密码,其中用户名只能由 6~10 位数字组成,密码只能有 6 位,任何不符合用户名或者密码要求的情况都视为异常,并且需要捕获并处理该异常。下面使用自定义异常类来完成对用户登录信息的验证功能,实现步骤如下。1)编写自定义异常类 LoginException,该类继承自 Exception。在 LoginException 类中包含两个构造方法,分别为无参的构造方法和含有一个参数的构造方法,代码如下:public class LoginException e原创 2020-09-18 14:39:51 · 4070 阅读 · 0 评论 -
1.12 声明自定义异常
如果 Java 提供的内置异常类型不能满足程序设计的需求,这时我们可以自己设计 Java 类库或框架,其中包括异常类型。实现自定义异常类需要继承 Exception 类或其子类,自定义运行时异常类需继承 RuntimeException 类或其子类。写一个检查性异常类,则需要继承 Exception 类。自定义异常的语法形式为:<class><自定义异常名><extends><Exception>在编码规范上,一般将自定义异常类的类名命名为原创 2020-09-18 11:51:07 · 424 阅读 · 0 评论 -
1.11 多异常捕获
前面我们学习的多 catch 代码块虽然客观上提高了程序的健壮性,但是也导致了程序代码量大大增加。如果有些异常种类不同,但捕获之后的处理是相同的,例如以下代码。try{ // 可能会发生异常的语句} catch (FileNotFoundException e) { // 调用方法methodA处理} catch (IOException e) { // 调用方法methodA处理} catch (ParseException e) { // 调用方法methodA处原创 2020-09-18 11:33:10 · 214 阅读 · 0 评论 -
1.10 throws和throw:声明和抛出异常
Java 中的异常处理除了捕获异常和处理异常之外,还包括声明异常和拋出异常。实现声明和抛出异常的关键字非常相似,它们是 throws 和 throw。可以通过 throws 关键字在方法上声明该方法要拋出的异常,然后在方法内部通过 throw 拋出异常对象。本节详细介绍在 Java 中如何声明异常和拋出异常。throws 声明异常当一个方法产生一个它不处理的异常时,那么就需要在该方法的头部声明这个异常,以便将该异常传递到方法的外部进行处理。使用 throws 声明的方法表示此方法不处理异常。thr原创 2020-09-18 11:29:32 · 1775 阅读 · 0 评论 -
1.9 Java 9增强的自动资源管理
当程序使用 finally 块关闭资源时,程序会显得异常臃肿,例如以下代码。public static void main(String[] args) { FileInputStream fis = null; try { fis = new FileInputStream("a.txt"); } catch (FileNotFoundException e) { e.printStackTrace(); } finally {原创 2020-09-18 10:54:33 · 210 阅读 · 2 评论 -
1.8 finally和return的执行顺序
在 Java 的异常处理中,try、catch 和 finally 是按顺序执行的。如果 try 中没有异常,则顺序为 try→finally,如果 try 中有异常,则顺序为 try→catch→finally。但是当 try、catch、finally 中加入 return 之后,return 和 finally 的执行顺序让很多人混淆不清。下面来分别说明一下。1. try 和 catch 中带有 return1)try 中带有 return,先是finally,再是try里的return原创 2020-09-18 10:47:55 · 165 阅读 · 0 评论 -
1.7 Java try catch finally语句
在实际开发中,根据 try catch 语句的执行过程,try 语句块和 catch 语句块有可能不被完全执行,而有些处理代码则要求必须执行。例如,程序在 try 块里打开了一些物理资源(如数据库连接、网络连接和磁盘文件等),这些物理资源都必须显式回收。Java的垃圾回收机制不会回收任何物理资源,垃圾回收机制只回收堆内存中对象所占用的内存。所以为了确保一定能回收 try 块中打开的物理资源,异常处理机制提供了 finally 代码块,并且 Java 7 之后提供了自动资源管理(Automatic Res原创 2020-09-17 17:41:42 · 255 阅读 · 0 评论 -
1.6 Java项目实战:计算平均成绩
编写一个程序,根据用户输入的总人数和总成绩计算平均成绩。要求程序能够处理总人数或者总成绩不是数字时的情况。使用多重 catch 语句时,Java 虚拟机会把实际拋出的异常对象依次和各个 catch 代码块中声明的异常类型匹配,如果异常对象为某个异常类型或者其子类的实例,就执行该 catch 代码块,而跳过其它的 catch 代码块。具体实现代码如下:import java.util.InputMismatchException;import java.util.Scanner;public clas原创 2020-09-17 17:38:01 · 907 阅读 · 0 评论 -
1.5 try catch语句详解
在实际应用中,对于错误的处理是极其重要的,任何程序都很难做到百分百完美,程序中可能存在大量未知问题,所以程序开发时一定要对各种问题进行相应的处理,而 Java 提供的异常处理机制可以帮用户更好地解决这方面的问题。Java 的异常处理机制可以让程序具有极好的容错性,让程序更加健壮。Java 的异常处理通过 5 个关键字来实现:try、catch、throw、throws 和 finally。try catch 语句用于捕获并处理异常,finally 语句用于在任何情况下(除特殊情况外)都必须执行的代码,th原创 2020-09-17 17:12:39 · 1227 阅读 · 0 评论 -
1.4 异常处理机制及异常处理的基本结构
前面介绍了异常的产生是不可避免的,那么为了保证程序有效地执行,需要对发生的异常进行相应的处理。Java 的异常处理通过 5 个关键字来实现:try、catch、throw、throws 和 finally。try catch 语句用于捕获并处理异常,finally 语句用于在任何情况下(除特殊情况外)都必须执行的代码,throw 语句用于拋出异常,throws 语句用于声明可能会出现的异常。本节先主要介绍异常处理的机制及基本的语句结构。Java 的异常处理机制提供了一种结构性和控制性的方式来处原创 2020-09-17 17:05:04 · 798 阅读 · 0 评论 -
1.3 Error和Exception的异同
Error(错误)和 Exception(异常)都是 java.lang.Throwable 类的子类,在 Java 代码中只有继承了 Throwable 类的实例才能被 throw 或者 catch。Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类,Exception 是程序正常运行过程中可以预料到的意外情况,并且应该被开发者捕获,进行相应的处理。Error 是指正常情况下不大可能出现的情况,绝大部分的 Error 都会导致程序处于非正常、不可恢复状态。所以不需原创 2020-09-17 17:02:18 · 727 阅读 · 0 评论 -
1.1 Java异常(Exception)处理及常见异常
计算机程序的编写也需要考虑处理这些异常情况。异常(exception)是在运行程序时产生的一种异常情况,已经成为了衡量一门语言是否成熟的标准之一。目前的主流编程语言,如 C++、c#、Ruby 和 Python 等大都提供了异常处理机制。异常简介Java 中的异常又称为例外,是一个在程序执行期间发生的事件,它中断正在执行程序的正常指令流。为了能够及时有效地处理程序中的运行错误,必须使用异常类,这可以让程序具有极好的容错性且更加健壮。在 Java 中一个异常的产生,主要有如下三种原因:Java 内部原创 2020-09-17 16:36:21 · 508 阅读 · 0 评论 -
1.2 内置异常类,异常方法
Java 语言定义了一些异常类在 java.lang 标准包中。标准运行时异常类的子类是最常见的异常类。由于 java.lang 包是默认加载到所有的 Java 程序的,所以大部分从运行时异常类继承而来的异常都可以直接使用。Java 根据各个类库也定义了一些其他的异常,下面的表中列出了 Java 的非检查性异常。异常描述ArithmeticException当出现异常的运算条件时,抛出此异常。例如,一个整数"除以零"时,抛出此类的一个实例。ArrayIndexOutOfBo原创 2020-09-17 16:37:12 · 112 阅读 · 1 评论