第30天学习打卡(异常的概述 IO流概述)

异常概述

即非正常情况,通俗的说,异常就是程序出现的错误

异常的分类(Throwable)

异常(Exception)

​ 合理的应用程序可能需要捕获的问题

​ 举例:NullPointerException

错误(Error)

​ 合理的应用程序不应该试图捕获的问题

​ 举例:StackOverFlowError

image-20210207101804018

异常的处理方式

JVM默认的异常处理方式

在控制台打印错误信息,并终止程序

开发中异常的处理方式

try...catch(finally):捕获,自己处理
throws:抛出,交给调用者处理

image-20210207102228698

try...catch(finally):捕获,自己处理
                  try{
                  //尝试执行的代码
                  }catch(Exception e){
                  //出现可能的异常之后的处理代码
                  }finally{
                  //一定会执行的代码,如关闭资源
                  }
package cn.itcast.demo18;
/*
Java中的异常
        分类:
           顶层父类:Throwable
           子类:    Error(错误,不需要我们处理)
           子类:    Exception(异常,这个才是我们常说的异常)
        JVM默认的异常处理方式:
                 在控制台中打印异常信息,并终止程序。
        处理方式:
            方式一:捕获,自己处理。   try..catch.finally
              格式:
                 try{
                 //尝试执行的代码(有可能出现问题的代码)
                 }catch(Exception e){
                 //出现问题后的解决方案
                 }finally{
                 //写在这里的代码正常情况下一定会执行,一般是用来释放资源的
                 }

                特点:
                   处理完异常之后,程序会继续执行
                 总结:
                   执行流程:
                       先执行try{}中的内容,看是否有问题(异常)
                            如果没有异常:直接执行finally语句中的异常
                            有异常:跳转到catch(){}语句中开始执行,再执行finally{}语句中的内容
                 方式二:抛出,交给调用者处理 throws
 */

public class Test {
    
    
    public static void main(String[] args) {
    
    
        //通过try catch finally来处理异常
        try{
    
    
            //尝试要执行的代码
            int a = 10 / 0;
            System.out.println("a:" + a);
            return;
        }catch (Exception e){
    
    
            //出现问题后的代码(解决方案)
            System.out.println("被除数不能为0");
        }finally {
    
    
            //即使try、catch中有return,finally里边的代码也会执行
            System.out.println("看看我执行了吗?");
        }

    }

}

throws:抛出,交给调用者处理
       public void 方法名()throws Exception{
    
    
       
       }

异常处理方式throws之方案一接着抛:

package cn.itcast.demo19;
/*
异常处理方式二:throws
    抛出异常,交给调用者处理

 特点:
    执行结束后,(抛出异常后)程序不再继续执行
 */

public class Test {
    
    
    public static void main(String[] args) throws Exception{
    
    
        //需求:调用show()
        //因为show()方法已经抛出了一个异常,作为调用者(main)必须处理这个异常
        //方案一:接着抛
        show();
        System.out.println("看看我执行了吗");
    }

    //定义一个方法
    public static  void show() throws Exception{
    
    
        int a = 10 / 0;
        System.out.println("a:" + a);
    }
}

方案二:try catch

package cn.itcast.demo19;
/*
异常处理方式二:throws
    抛出异常,交给调用者处理

 特点:
    执行结束后,(抛出异常后)程序不再继续执行
 */

public class Test {
    
    
    public static void main(String[] args) throws Exception{
    
    
        //需求:调用show()
        //因为show()方法已经抛出了一个异常,作为调用者(main)必须处理这个异常
        //方案一:接着抛
        //show();

        //方案二:采用try catch处理
        try{
    
    
            show();

        }catch (Exception e){
    
    
            System.out.println("代码出问题了!");
        }
        System.out.println("看看我执行了吗");
    }

    //定义一个方法
    public static  void show() throws Exception{
    
    
        int a = 10 / 0;
        System.out.println("a:" + a);
    }
}

IO流概述:

I/O,即输入(Input)输出(Output),IO流指的是数据像连绵的流体一样进行传输。

IO流的作用:

​ 在本地磁盘和网络上操作数据

IO流分类

按数据流向分:

​ 输入流

​ 输出流

按操作方式分:

​ 字节流:

​ InputStream

​ OutputStream

​ 字符流:

​ Reader

​ Writer

这四个流都是抽象类,使用时要使用它们的子类。

IO流体系

字符流:按字符读写数据的IO流

​ Reader

​ FileReader

​ BufferedReader

​ Writer

​ FileWriter

​ BufferedWriter

image-20210207114130012

字节流:按字节读写数据的IO流

​ InputStream

​ FileInputStream

​ BufferedInputStream

​ OutputStream

​ FileOutputStream

​ BufferedOutputStream

image-20210207114450416

IO流简介:
    概述:
     I(Input,输入)/O(Output,输出流)流,是Java中用来传输数据的方式
     划分:
         按照流向分:
                  输入流:读数据。


                  输出流:写数据。
         按照操作分:
                  字节流:以字节为单位来操作数据
                  InputStream: 字节输入流的顶层抽象类
                          FileInputStream:普通的字节输入流
                          BufferedInputStream:高效的字节输入流(也叫:字节缓冲输入流)

                  OutputStream:字节输出流的顶层抽象类
                          FileOutputStream:普通的字节输出流。
                          BufferedOutputStream:高效的字节输出流(也加:字节缓冲输出流)


                  字符流:以字符为单位来操作数据
                  Reader:字符输入流的顶层抽象类
                         FileReader:普通的字符输入流。
                         BufferedReader:高效的字符输入流(也叫:字符缓冲输入流)
                  Writer:字符输出流的顶层抽象类
                         FileWriter:普通的字符输出流
                         BufferedWriter:高效的字符输出流(也叫:字符缓冲输出流)

猜你喜欢

转载自blog.csdn.net/doudoutj/article/details/113738927