第30天学习打卡(异常概述 IO流概述)
异常概述
即非正常情况,通俗的说,异常就是程序出现的错误
异常的分类(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流概述)的更多相关文章
- 36、IO流概述和分类
IO流概述 IO流的主要作用是用来处理设备之间的数据传输,例如可以使用IO流将一台电脑硬盘里面的照片传输到另一台电脑上面,即将照片转换为字节,然后将字节传到另一台电脑上面,另一台电脑接收后,可以将这些 ...
- java学习(九) —— java中的File文件操作及IO流概述
前言 流是干什么的:为了永久性的保存数据. IO流用来处理设备之间的数据传输(上传和下载文件) java对数据的操作是通过流的方式. java用于操作流的对象都在IO包中. java IO系统的学习, ...
- Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
第一讲 IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...
- Java之IO流概述和File基本操作
IO流图解 IO(in / out)流的分类 流向: 输入流 读取数据 输出流 写出数据 数据类型: 字节流 一个字节占8位, 以一个字节为单位读数据 八大数据类型所占字节数: byte(1), ...
- JavaSE学习总结(十七)—— IO流
一.IO流概要 1.1.概念 开发中经常要进行输入输出操作,掌握Java中的IO流显得非常必要. 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流, ...
- java IO流 (二) IO流概述
1.流的分类* 1.操作数据单位:字节流.字符流* 2.数据的流向:输入流.输出流* 3.流的角色:节点流.处理流 图示: 2.流的体系结构 说明:红框对应的是IO流中的4个抽象基类.蓝框的流需要大家 ...
- JAVA学习第四十七课 — IO流(一):文件的读写
输入流和输出流相对于内存 将外部设备的数据读取到内存中:输入 将内存中的数据写入外部设备中:输出 IO流经常使用基类 字节流的抽象基类:InputStream,OutputStream 字符的抽象基类 ...
- Java学习之路(十一):IO流<前戏>
File类的概述和构造方法 构造方法: File(String pathname):根据一个路径得到File对象 File(String parent,String child):根据一个目录和一个子 ...
- java学习第20天(IO流)
构造方法File file = new File("e:\\demo"); 创建文件夹 File file = new File("e:\\demo"); fi ...
随机推荐
- AYIT-2020 609暑假集训第一周周赛题 A - A计划
可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老.年迈的国王正是心急如焚,告招天下 ...
- cmd控制台Windows服务相关
1.创建服务 sc create ServerName binpath= "E:\MySql5.5\bin\mysqld.exe" 2.启动服务 sc start ServerNa ...
- 自己动手实现springboot运行时执行java源码(运行时编译、加载、注册bean、调用)
看来断点.单步调试还不够硬核,根本没多少人看,这次再来个硬核的.依然是由于apaas平台越来越流行了,如果apaas平台选择了java语言作为平台内的业务代码,那么不仅仅面临着IDE外的断点.单步调试 ...
- Python 遭遇 ProxyError 问题记录
最近遇到的一个问题,在搞清楚之后才发现这么多年的 HTTPS_PROXY 都配置错了! 起因 想用 Python 在网上下载一些图片素材,结果 requests 报错 requests.excepti ...
- Ubuntu 下更改pip源使用清华源
一.新建目录 sudo -s mkdisk ~./pip vim ~./pip/pip.conf 二.复制下面代码,并保存 [global] index-url = https://pypi.tuna ...
- codeforces 1045I Palindrome Pairs 【stl+构造】
题目:戳这里 题意:给1e5个字符串,问有多少对字符串组合,满足最多只有一种字符有奇数个. 解题思路:每种情况用map存一下就行了.感觉这题自己的代码思路比较清晰,所以写个题解记录一下 附ac代码: ...
- leetcode15 三数之和 双指针
注意题目没要求数字只能用一次 a + b + c = 0 即为 -b=a+c,同时要求数字不全为正(然后发现a+b+c就行...不过多想想没坏处嘛) 先处理特殊情况,然后 先排序 注意不重复,只需要有 ...
- Bootstrap页头
页头组件能够为 h1 标签增加适当的空间,并且与页面的其他部分形成一定的分隔.它支持 h1 标签内内嵌 small 元素的默认效果,还支持大部分其他组件(需要增加一些额外的样式). <div c ...
- HDU 3966 Aragorn's Story(树链剖分)题解
题意:给一棵树,要求你对一个路径上的值进行加减,查询某个点的值 思路:重链剖分. 由于分了轻重儿子,我每次到重儿子的top只要O(1),经过的轻儿子最多logn条,那么我每次往上跳最多跳logn次. ...
- Os-hackNos-1(drupal7+suid提权)
一.信息收集 得到 ip是 192.168.56.101 , 端口开启了22和80,扫目录发现drupal 7 访问一下呢 在exploit-db上面搜索到存在相关的漏洞,而且是用直接上msf 使用第 ...