异常机制、 Scanner类 day12

来源:互联网 发布:iphone刷机软件mac版 编辑:程序博客网 时间:2024/06/06 00:01

1、在Java中提供了大量的异常类,这些类都继承自  java.lang.Throwable 类.

Throwable类有两个直接的子类:ERROR和EXCEPTION。ERROR表示程序中产生的错误;EXCEPTION表示程序中产生的异常。

1.1、Error 类称为错误类,他表示Java运行时产生的系统内部错误或资源耗尽的错误,是比较严重的,紧靠修改程序本身是不能恢复执行的.

1.2、 Exception类称为异常类,他表示程序本身可以处理的错误.在开发Java程序中进行的异常处理.都是针对Exception类及其子类,在Exception类的众多子类中,有一个特殊的RuntimeExcepiton类,该类及其子类用于表示运行时异常.这种异常在编译的时候,编译器不会处理,只有运行代码的时候,如果异常发生了.此时程序才会进行异常处理.除了此类,Exception类下所有其它的子类都用于表示编译时异常.编译时异常必须要通过修改源代码从而使编译能够顺序通过.


2、编译时异常、运行异常、自定义异常

编译时异常

2.1、在Java中,Exception类中除了RuntimeException类及其子类,其它类都是编译时异常.编译时异常的特点是Java编译器会对其进行检查,如果出现异常就必须对异常进行处理.否则程序无法通过编译.

       处理编译时期的异常有两种方式:

1.     使用 try … catch … 语句对异常进行`捕获`.

2.     使用 throws 关键字声明抛出异常,其目的就是让调用者对其进行处理.

运行时异常

RuntimeException类及其子类都是运行时异常,运行时异常的特点是Java编译器不会对其进行检查,也就是说,当程序中出现这类异常时,即使没有使用try … catch … 语句捕获或使用throws关键字声明抛出.程序也能编译通过.运行时异常一般是由程序中的逻辑错误引起的.在程序运行时无法恢复.运行时异常不声明就是不让调用者进行提前处理,目的就是为了让程序停止.让调用者看到错误的显示,并进行代码的修正.

自定义异常

 JDK中定义了大量的异常类,虽然这些异常类可以描述编程时出现的大部分异常情况,但是在程序开发中有时可能需要描述程序中特有的异常情况.例如我们设计的Person类age不能为负数的情况.为了解决这个问题,在Java中允许用户自定义异常.但自定义的异常类必须继承自Exception或其子类


3、异常的处理方式:

3.1、捕获:try-catch-finally

1.  try{
2.      // 操作数据库
3.  }catch(异常类型  ){
4.      // 异常处理代码
5.  }finally{
6.      // 关闭和数据的连接代码 / IO 

在catch代码块中增加了一个return语句,用于结束当前方法,此时程序就不会执行了,而finally中的代码仍会被执行,并不会被return语句所影响,也就是说,无论

程序是发生异常还是return语句结束,finally中的语句都会执行,正是由于这种特殊性,在程序设计时,经常会在try…catch … 后使用finally代码块来完成必须

做的事情.例如释放资源.

注意: finally中的代码块有一种情况下是不会执行的,那就是在try…catch…中执行了System.exit(0)语句.System.exit(0)表示退出当前的Java虚拟机,

Java虚拟机停止了,任何代码都不能再执行了.

3.2、声明:使用throws关键字对异常进行声明

throws 关键字声明抛出异常的语法格式 :

1.  修饰符返回值类型  方法名(参数列表)throws异常类型1,异常类型2...{
2.      // 方法实现体
3.  }

说明 : throws 关键字需要写在方法声明的后面,throws后面需要声明方法中发生异常的类型,通常将这种做法称为方法声明抛出一个异常.

结论 : 只要是声明了编译时异常,无论是否会发生异常,都需要对其进行处理

处理方式一 :  try…catch…捕获处理.


处理方式二 :  使用throws关键字继续声明.

4、 throw 和 throws 的区别

throw:抛出

当在方法体中有异常的时候,这个异常需要抛出,这时我们可以在方法中使用throw关键字把这个异常抛出。throw   new 用于抛出异常对象.

throws:声明

方法中有编译时期的异常时,我们同时又需要把这个异常告诉给方法的调用者,希望方法的调用者提前进行处理,这时可以在方法上使用throws关键字声明方法中的异常。throws用于声明异常.


5、Scanner类,属于java.lang.object包中的java.util.Scanner





原创粉丝点击