java学习记录7异常

chendejian      2022-04-05     562

关键词:

1. 异常机制

  1. 异常(Exception):意思是例外。软件程序在运行过程中遇到的例外。

  2. 格式:try{}catch(Exception e){e.printStackTrace();}

  3. Java是采用面向对象的方式来处理异常的。处理过程:

    1. 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE。

    2. 捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的方法来开始追溯,直到找到相应的异常处理代码为止。

  4. 异常的分类:

    1. 所有异常的根类:Throwable。

    2. Error:自己处理不了的问题,需要重启虚拟机。

    3. Exception:程序本省能够处理的异常。是所有异常类的父类,其子类对应了各种各样可能出现的异常事件。

      1. Checked Exception已检查异常:编译器需要处理。编译时通不过。方法1:try catch,方法2:throws抛出

        try{
           语句1;
           语句2:
        }catch(Exception1 e){
           
        }catch(Exception2 e/*异常类型*/){
           
        }finally{
           //是否遇到异常,这里都会最后执行。
        }
        如果语句1有异常,语句2就不执行了,直接执行相应的异常处理语句,最后执行finally。
           
        //方法1:捕获异常try catch    
        FileReader reader = null;
        try {

        reader = new FileReader("d:/bb.txt");
        char c1 = (char) reader.read();//读文件的一个字符
        System.out.println(c1);
        } catch (FileNotFoundException e) {//子类异常在父类前面

        e.printStackTrace();//打印异常信息
        } catch(IOException e){
        e.printStackTrace();
        }finally{
        try {
        if(reader != null)
        {
        reader.close();
        }
        } catch (IOException e) {
        ?
        e.printStackTrace();
        }
        }
        方法2:声明异常throws抛出,谁调用谁处理
           
         public static void main(String[] args) throws IOException /*抛給了JRE*/{
        readMyFile();
        }
        ?
        public static void readMyFile() throws IOException {
        FileReader reader = null;
        reader = new FileReader("d:/bb.txt");
        char c1 = (char) reader.read();// 读文件的一个字符
        System.out.println(c1);
        ?
        if (reader != null) {
        reader.close();
        }
        }  

         

      2. Runtime Exception(Unchecked Exception)运行时异常:编译器不需要处理。逻辑判断处理来避免这些异常。

                int a = 0;
        int b = 1;
        if(a != 0)
        {
        System.out.println(b/a);
        }
        //java.lang.NullPointerException 空指针异常
        String str = null;
        if(str != null)
        {
        System.out.println(str.length());
        }

         

    4. 手动抛出异常

      1. 自定义异常:如果继承Exception类,则为受检查异常,必须对其进行处理。如果不想处理,可以让自定义异常类继承运行时异常RuntimeException类。

      2. alt+shift+s:弹出Source下拉框

        public static void main(String[] args) {
    Person p = new Person();
    p.setAge(-10);
    }
    ?
    class Person{
    private int age;
    ?
    public int getAge() {
    return age;
    }
    ?
    public void setAge(int age) {
    if(age < 0){
    try {
    throw new IllegaAgelException("年龄不能为负数");
    } catch (IllegaAgelException e) {

    e.printStackTrace();
    }
    }
    this.age = age;
    }


    }
    class IllegaAgelException extends Exception{
    public IllegaAgelException(){

    }
    public IllegaAgelException(String msg){
    super(msg);

    }
    }

     

2020/10/24java学习记录no.6

   1.他们是Throwable的两个平行类。Expection是所有异常类的祖先,而Error是错误类的祖先。  ①Error不是程序需要捕获和处理的,发生时程序将会停止。  ②Exception有许多子类,都是按照包的形式组织的,程序需要应... 查看详情

学习记录:快速幂(代码片段)

目录学习记录快速幂快速幂的递归实现非递归实现学习记录快速幂快速幂的递归实现假设要算(7^9),如果采取普通计算,也就是(7*7*7*7*7*7*7*7*7),共需要8次运算。运用二分的思想,先算(7^4),然后通过(7^4*7^4*7)来计算$7^9$,这样就... 查看详情

记录异常日志的7条规则(代码片段)

...一直在帮忙调试一些让人头大的bug问题,这才意识到如何记录异常日志对于简化调试的重要性,我总结了几点记录异常日志的最佳实践发表在此。1、记录技术性异常而不是用户异常用户异常(如:“登录用户名已经存在”... 查看详情

学习问题记录--异常(代码片段)

 1.简述JavaError类与Exception类的区别。共同点:都继承自第一层次的Object和第二层次的Throwable类不同点:Error类:不是需要程序进行捕获和处理的,Error抛出后程序停止运行。Exception类:虚拟机系统根据异常的类型产生相应的异... 查看详情

关于如何使用机器学习来做异常检测的7个问题

  关于如何使用机器学习来做异常检测的7个问题  导读  异常检测的一些入门问题。  关于如何使用机器学习来做异常检测的7个问题  问问题是学习的好方法之一。但有时你不知道从哪里开始,或者该问什么—&md... 查看详情

2020.7.3时间记录总学习5.69

    查看详情

2020.6.17时间记录总学习7.84

    查看详情

2020.7.5时间记录总学习6.98

    查看详情

2020.7.6时间记录总学习8.6

    蛋疼,干一件杂事,一早上没了 查看详情

2020.7.4时间记录总学习9.43

    我日,今天怎么这么高。不过目标学习只有8小时 查看详情

2020年寒假第7次学习进度记录

当日学习内容:视频学习jQuery基础,熟悉使用AndroidStudio1.视频学习近况   继续学习jQuery基础2.AndroidStudio的使用情况   在上次安装之后,发现AndroidSDK版本没有下载完,所以今天又对其进行的完善。 查看详情

linux学习记录-7

useradd命令用于创建新的用户,格式为“useradd[选项]用户名”。可以使用useradd命令创建用户账户。使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户... 查看详情

jvm学习-java内存区域与异常

注:本文基于JDK1.7,HotSpot虚拟机一、前言java是一门跨硬件平台的面向对象高级编程语言,java程序运行在java虚拟机上(JVM),由JVM管理内存,这点是和C++最大区别;虽然内存有JVM管理,但是我... 查看详情

b站狂神说java---记录springmvc学习笔记(代码片段)

B站学习传送门==>【狂神说Java】SpringMVC最新教程IDEA版通俗易懂感谢狂神❤ml1.回顾servlet2.SpringMVC概述3.SpringMVC执行原理4.深入理解5.使用注解进行springmvc的配置6.controller配置小结首先看看实现Controller接口的方式使用注解的... 查看详情

packagemanagerservice学习记录基于7.1.1源码

 参考:http://blog.csdn.net/innost/article/details/47253179http://blog.csdn.net/gaugamela/article/details/52619720感谢文章作者 PackageManagerService是Android系统服务,它负责系统中Package的管理,应用程序的安装、卸载、信息查询等。&nbs 查看详情

2018-2019-120165220《信息安全系统设计基础》第7周学习总结

 教材学习内容总结控制流:控制转移序列。控制转移:从一条指令到下一条指令。异常控制流:现代操作系统通过使控制流发生突变来对系统状态做出反应,这些突变称为异常控制流。一、异常(硬件触发异常,软件处理异... 查看详情

2020.7.24第十九天(代码片段)

1.今天学习了在Java中如何进行异常处理(1)Try...catch...finally...通过使用try....catch...finally...语句处理异常,它捕获被命名为属于异常类的异常,并调用方法处理它。其中,finally无论有无异常都会执行。异常处理代码块的基本形式... 查看详情

2018-2019-120165335《信息安全系统设计基础》第7周学习总结

一.教材学习总结:  异常:    异常是异常控制流的一种形式,由硬件和操作系统实现。    在任何情况下,处理器发现有事件发生时,会有异常控制表来实现。    系统为每一种类型的异常都进行编号,是由... 查看详情