异常概述

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

异常的分类(Throwable)

异常(Exception)

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

举例:NullPointerException

错误(Error)

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

举例:StackOverFlowError

异常的处理方式

JVM默认的异常处理方式

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

开发中异常的处理方式

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

 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

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

InputStream

FileInputStream

BufferedInputStream

OutputStream

FileOutputStream

BufferedOutputStream

 IO流简介:
     概述:
      I(Input,输入)/O(Output,输出流)流,是Java中用来传输数据的方式
      划分:
          按照流向分:
                   输入流:读数据。
 ​
 ​
                   输出流:写数据。
          按照操作分:
                   字节流:以字节为单位来操作数据
                   InputStream: 字节输入流的顶层抽象类
                           FileInputStream:普通的字节输入流
                           BufferedInputStream:高效的字节输入流(也叫:字节缓冲输入流)
 ​
                   OutputStream:字节输出流的顶层抽象类
                           FileOutputStream:普通的字节输出流。
                           BufferedOutputStream:高效的字节输出流(也加:字节缓冲输出流)
 ​
 ​
                   字符流:以字符为单位来操作数据
                   Reader:字符输入流的顶层抽象类
                          FileReader:普通的字符输入流。
                          BufferedReader:高效的字符输入流(也叫:字符缓冲输入流)
                   Writer:字符输出流的顶层抽象类
                          FileWriter:普通的字符输出流
                          BufferedWriter:高效的字符输出流(也叫:字符缓冲输出流)

第30天学习打卡(异常概述 IO流概述)的更多相关文章

  1. 36、IO流概述和分类

    IO流概述 IO流的主要作用是用来处理设备之间的数据传输,例如可以使用IO流将一台电脑硬盘里面的照片传输到另一台电脑上面,即将照片转换为字节,然后将字节传到另一台电脑上面,另一台电脑接收后,可以将这些 ...

  2. java学习(九) —— java中的File文件操作及IO流概述

    前言 流是干什么的:为了永久性的保存数据. IO流用来处理设备之间的数据传输(上传和下载文件) java对数据的操作是通过流的方式. java用于操作流的对象都在IO包中. java IO系统的学习, ...

  3. Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律

    第一讲     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...

  4. Java之IO流概述和File基本操作

    IO流图解 IO(in / out)流的分类 流向: 输入流  读取数据 输出流  写出数据 数据类型: 字节流 一个字节占8位, 以一个字节为单位读数据 八大数据类型所占字节数: byte(1), ...

  5. JavaSE学习总结(十七)—— IO流

    一.IO流概要 1.1.概念 开发中经常要进行输入输出操作,掌握Java中的IO流显得非常必要. 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流, ...

  6. java IO流 (二) IO流概述

    1.流的分类* 1.操作数据单位:字节流.字符流* 2.数据的流向:输入流.输出流* 3.流的角色:节点流.处理流 图示: 2.流的体系结构 说明:红框对应的是IO流中的4个抽象基类.蓝框的流需要大家 ...

  7. JAVA学习第四十七课 — IO流(一):文件的读写

    输入流和输出流相对于内存 将外部设备的数据读取到内存中:输入 将内存中的数据写入外部设备中:输出 IO流经常使用基类 字节流的抽象基类:InputStream,OutputStream 字符的抽象基类 ...

  8. Java学习之路(十一):IO流<前戏>

    File类的概述和构造方法 构造方法: File(String pathname):根据一个路径得到File对象 File(String parent,String child):根据一个目录和一个子 ...

  9. java学习第20天(IO流)

    构造方法File file = new File("e:\\demo"); 创建文件夹 File file = new File("e:\\demo"); fi ...

随机推荐

  1. 20000套免费ppt模板获取攻略

    前言 又到年末了,发现需要用到简历,PPT这些的地方又多了.PPT这东西吧,颜值真的很重要,毕竟老板拉融资都是用ppt拉来的.只要ppt够精美,外加上你的故事讲得好,A轮指定不是问题呀.往小处说,就是 ...

  2. 【论文研读】Sabir, Ekraam, et al. "Recurrent convolutional strategies for face manipulation detection in videos."&#160;Interfaces (GUI)&#160;3.1 (2019).

    #摘要 错误信息通过合成逼真的图像和视频进行传播这一严重问题,需要鲁棒的篡改检测方法来应对.尽管在检测静止图像上的面部篡改方面已付出了巨大的努力,但人们对于通过利用视频流中存在的时序信息,对视频中被篡 ...

  3. 2288.【POJ Challenge】生日礼物 链表+堆+贪心

    BZOJ2288 [POJ Challenge]生日礼物 题意: 给一个长度为\(n\)的数组,最多可以选\(m\)个连续段,问选取的最大值是多少 题解: 先把连续的符号相同的值合并,头和尾的负数去掉 ...

  4. UVALive 7146

    Long long ago there is a strong tribe living on the earth. They always have wars and eonquer others. ...

  5. hdu2126 Buy the souvenirs

    Problem Description When the winter holiday comes, a lot of people will have a trip. Generally, ther ...

  6. Codeforces Round #650 (Div. 3) D. Task On The Board (构造,贪心)

    题意:有一个字符串和一组数,可以对字符串删去任意字符后为数组的长度,且可以随意排序,要求修改后的字符串的每个位置上的字符满足:其余大于它的字符的位置减去当前位置绝对值之和等于对应序列位置上的数. 题解 ...

  7. SPU与SKU概念

    1. 什么是SPU SPU 是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该集合描述了一个产品的特性.即:某一款商铺的公共属性. 通俗点讲,属性值.特性相同的货品就可以称为一个 S ...

  8. TCP之“3次握手,4次挥手”问题——实例分析

    上一篇我们分析了三次握手和四次握手的过程,但是理论分析难免枯燥难懂,下面这篇我们来看一个例子,就能更好地理解tcp链接了. 我们可以通过网络抓包的查看具体的流程: 比如我们服务器开启9502的端口.使 ...

  9. C++中的explicit

    首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数 ...

  10. POJ 2778 DNA Sequence(AC自动机 + 矩阵快速幂)题解

    题意:给出m个模式串,要求你构造长度为n(n <= 2000000000)的主串,主串不包含模式串,问这样的主串有几个 思路:因为要不包含模式串,显然又是ac自动机.因为n很大,所以用dp不太好 ...