第三十天

了解了程序的异常机制以及如何进行异常处理

明天学习用log4j记录异常日志信息

Java异常是指在代码段中发生运行出错的情况。程序中的错误可能来自于编译错误和运行错误。编译错误是因为编写的程序存在语法问题,未能通过编译过程而产生的错误,它将由语言的编译系统负责检测和报告。运行错误是在程序的运行过程中产生的错误。

一、什么是异常
Java把程序运行中遇到的非致命的,通过某种修正后还能继续执行的错误称作异常。
二、产生异常的几种情况
(1) Java虚拟机检测到了异常,这些异常可能是由以下几种情况引起的。
①表达式的计算违反了Java的语义,如整数被0除。
②超出了某些资源限制,如使用了太多的内存。
(2)Java程序代码中的throw语句被执行。
(3)异步异常发生。异步异常的原因可能由以下情况引起。
①Thread的stop方法被调用。
②Java虚拟机内部错误发生。
三、异常处理的几个关键字
Java异常处理通过5个关键字来管理,它们是try、catch、throw、throws和finally。

四、
Java中的异常类有一个父类叫做Throwable,其下面有两个子类分别是Error类和Exception类。

(1)Error异常:

Error指的是错误,通常是程序员不可能通过代码来解决的问题,底层环境或硬件问题。

Error类包括lingageError(结合错误)与VirtualmachineError(虚拟机错误)两个字类

Virtual Machine Error子类,当Java虚拟机崩溃了或用尽了他继续操作的资源时抛出该错误。

 

 (2)Exception异常

Exception指的是异常,或理解为程序运行过程中的意外情况,通常在程序中铺货的异常其实是Exception及其Exception子类的异常。Exception类型的异常又分为运行时异常和非运行时异常。

①运行时异常

运行时异常继承自RuntimeException。Java编译器允许程序不做处理。

 

 ②非运行时异常

非运行时异常在java.lang类库中定义,Java编译器要求必须捕获或声明抛弃这种异常。

 

 五、在Java中进行异常处理

Java异常处理的方法有两种:try...catch...finally...和throws 来操作。

1、Try...catch...finally...

通过使用Try...catch...finally语句处理异常,它捕获被命名为属于异常类的异常,并调用方法处理它。其中,finally无论异常都会执行。

try                        //监视
   {
    可能发生异常的代码块;
   }
   catch(异常类型 异常对象名)     //捕获并处理异常
   {   
       异常处理代码块;
    }finally {
                            //最终执行
    }
public class TryCatchFinally {
    public static void main(String[] args) {
        try {
            int x=5;
            int y=x/0;
            System.out.println(y);
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            System.out.println("Over!");
        }
    }
}

catch语句可以有多个,并且如果用户要捕获Exception,则将Exception放在最后,不能放在前面,否则会出错,如果要捕获多个异常,异常的范围要按照从小到大顺序叠放。

catch多个异常:

public class TryCatchFinally {
    public static void main(String[] args) {
        try {
            int x=5;
            int y=x/0;
            System.out.println(y);
        }catch(IllegalArgumentException e) {
            e.printStackTrace();//将错误打印到堆栈
        }catch(Exception e) {
            e.printStackTrace();//Exception的范围比较大,应该 放在后面
        }      
    }
}

2.使用throws抛出异常

声明抛弃异常是在一个方法中声明throws子句中指明的。throws子句方法的基本形式如下:

【修饰符】返回类型 方法名(参数1,参数2,...)throws 异常列表{}

 示例:通过throws 抛出异常

public class ThrowsDemo {
    public static void main(String[] args)throws Exception {
        int x=5;
        int y=x/0;
        System.out.println(y);
    }
}

throws子句中同时可以指明多个异常,说明该方法不对这些异常进行处理,而是声明抛弃他们。

示例:throws抛出多个异常

public class ThrowsDemo {
    public static void main(String[] args)throws IllegalArgumentException {
        int x=5;
        int y=x/0;
        System.out.println(y);
    }
}

 

posted @ 2020-08-04 21:09  yasai  阅读(85)  评论(0编辑  收藏  举报