zoukankan      html  css  js  c++  java
  • 2020.7.26

    学习内容:

    1、异常:程序运行中遇到的非致命的,通过某种修正后还能将继续执行的错误叫做异常

    2、产生异常的几种情况:

    (1)Java虚拟机检测到异常,这些异常可能是由以下几种情况引起的

    • 表达式的计算违反了Java的语义,如整数被0除
    • 超出了某些资源限制,如使用了太多的内存

    (2)Java程序代码中的 throw 语句被执行

    throw语句用在方法bai体内,表示抛出异常,由方法du体内的语句处理 throws语句用在方法声明后面,表示zhi再抛dao出异常,由调用这个方法的上一级方法中的语句来处理throws主要是声明这个方法会抛出这种类型的异常,使其他地方调用它时知道要捕获这个异常。throw是具体向外抛异常的动作,所以它是抛出一个异常实例。throws说明你有哪个可能,倾向 throw的话,那就是你把那个倾向变成真实的了同时:1)throws出现在方法函数头;而throw出现在函数体; 2)throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常; 3)两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

    (3)异步异常发生,异步异常的原因可能由以下情况引起

    • Thread的stop方法被调用
    • Java虚拟机内部错误发生

    3、异常处理的几个关键字

    Java异常处理通过5个关键字来管理:try 、catch、 throw 、throws 、finally

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

    (1)Error异常

    Error指的是错误,通常是程序员不可能通过代码来解决的问题,底层环境或者硬件问题,也就是说在程序中用户不用捕获Error及任何Error子类的异常

    Error类包括linkageError(结合错误)和 VitualmachineError(虚拟机错误)

    (2)Exception

    Exception指的是异常,或理解为程序运行过程中出现的意外情况,通常在程序中捕获的异常其实是 Exception及 Exception子类的异常

    Exception类型的异常又分为运行时异常和非运行时异常

     4、在Java中如何进行异常处理

    Java异常处理的方法有两种,分别是使用 try...catch...finally...和throws来操作的

    (1)try...catch...finally...

    它捕获被命名为属于异常类的异常,并调用方法处理它。其中finally无论有无异常都会执行,finally可以省略

    package day01;
    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放到最后,不能放在前面,否则会出错。可以简单理解为,如果要捕获多个异常,异常的范围要按照从小到大顺序叠放

    package day01;
    
    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){//Exception的范围比较大,应该放在后面
                e.printStackTrace();
            }
        }
    }

    当抛出一个异常时,异常会由相应的catch语句捕获并处理。与一个try相关的catch语句可以有多个,构成多重catch语句,异常类型决定了要执行哪个catch语句,如果没有抛出异常,那么try代码块就会结束,并且会跳过它的所有catch语句,从最后一个catch后面的第一个语句继续执行。

    其实try语句也可以嵌入try语句,一个try代码块可以嵌入到另一个try代码块中。由于内部try代码块产生的异常如果没有被与该内部try代码块相关的catch捕获,就会传到外部try代码

    例:try语句嵌入多个try语句

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

    遇到的问题:

    IllegalArgumentException是什么?

    IllegalArgumentException此异常表明向方法传递了一个不合法或不正确的参数。

    try...catch...finally...异常处理方法没明白

    https://www.jb51.net/article/154023.htm

    明天要学习的内容:

    使用throws抛出异常、通过throw 抛出异常、自定义异常、用log4j记录异常日志信息

  • 相关阅读:
    MongoDB 之 手把手教你增删改查 MongoDB
    MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB
    全栈12期的崛起之捡点儿有用的说说
    Python 常用模块
    Python3中的内置函数
    Python程序员之面试必回习题
    Django之初始庐山真面目
    Django之ORM操作
    MySQL-索引
    MySQL-函数
  • 原文地址:https://www.cnblogs.com/ltw222/p/13395971.html
Copyright © 2011-2022 走看看