JAVA--IO流基础(1)

本文深入讲解Java中的异常处理机制,包括异常的概念、分类及其继承体系。探讨了异常处理的多种方式,如try...catch...finally、throw和throws的使用场景及区别。同时介绍了自定义异常的方法,帮助开发者更好地理解和应用异常处理。

IO流的概念
IO流用来处理设备之间的数据传输
上传文件和下载文件
IO流的前奏
说起IO流我们就要首先学习File类,因为File是表示IO流将来要操作的文件,而常见的操作文件无非就是上传文件和下载文件,在这个过程中可能会出现问题,我们就需要对他进行处理,所以再刚开始我们先学异常
异常的概述和分类
异常就是Java程序在运行过程中出现的错误
异常的继承体系:

		异常的基类:Throwable
		严重问题:Error 一般都是很严重的问题,不予处理。
		非严重问题:Exception
						编译时异常:非RuntimeExcption
						运行时异常:RuntimeExcption

JVM默认是如何处理异常的
main函数收到这个问题,有两种处理方式:
第一种就是,将该问题处理,继续运行
第二种就是,自己没有对应的处理办法,只有把他交给main和jvm处理
jvm有个异常处理机制,就将该异常处理进行。
并将该异常的名称,异常的信息,异常出现的位置打印在控制台上,同事将程序停止运行,也就是报错

异常处理,try…catch
异常处理的两种方式
第一种是try…catch…finall
第二种是throw
基本格式

				try{
									可能出现问题的代码;
									}catch(异常名,变量名){
																		针对问题的处理;}
																finally{
																	释放资源;}

注意 : try中的代码越少越好
catch中必须要做处理,不能隐藏异常信息

public static void main(String[] args) {
        final Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数");
        final int num1 = sc.nextInt();
        System.out.println("请输入第二个整数");
        final int num2 = sc.nextInt();
        try {
            int num3 = num1/num2;
            System.out.println(num3);
        }catch (ArithmeticException e){//ArithmeticException是除数为0异常
            e.printStackTrace();//打印异常的堆栈信息
            System.out.println("除数为0了,计算错误");
        }finally {      //必须要执行清空内存,释放资源
        if(scanner!=null){
        scanner.close();}
        }
    }

在这个代码中,你输入的除数入过是个0的话,不会报错,输出的是除数为0,计算错误。

在JVM没有停止的时候,Finally中的内容一定会执行
finally用来释放资源,在IO流操作和数据库操作中会见到
try…catch的方式处理异常(2)

	try{
	可能出现的问题代码;
	}catch(异常名1 变量名1){
	对异常的处理方式;
	}catch(异常名2 变量名2){
	对异常的处理方式;
	}....

注意事项:
1:能明确的尽量明确,不要用大的来处理。
2:平级关系的异常谁前谁后无所谓,如果出现了子父关系,父必须在后面

JDK1.7针对多个异常的处理

	try {

		 可能出现问题的代码 ;

		}catch(异常名1 | 异常名2 | ....   变量名){

		对异常的处理方案 ;

		}

优点:简化代码
缺点:对多个异常处理方法一致,

注意:
多个异常之间只能是平级关系,不能出现子父类的继承关系

编译期异常和运行期异常的区别
所有的RuntimeException类以及其子类的实例被成为运行时异常,其他的异常就是编译时异常

编译时异常:Java程序必须显示结果,否则就会发生错误,无法通过编译
运行时异常:无需显示处理,也可以和编译时异常一起处理

Throwable的几个常见的方法
getMessage(): 获取异常信息,返回字符串。
toString():获取异常类名和异常信息,返回字符串
printStackTrace() 获取异常类名和异常信息,以及异常出现在程序的位置,返回值void

throws方式处理异常
定义功能方法时,需要把出现的问题暴漏出来让调用者去处理。
那么就通过throws在方法上标识

throw和throws的区别

throw的概述:在功能方法内部出现某种请款,程序不能继续运行,需要进行跳转时,就用throw把对象抛出
区别:
throws
用在方法声明后,跟的是异常对象名
可以跟多个异常类名,用逗号隔开
表示抛出异常,用该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定会发生这些异常
throw
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
这个异常对象可以是编译期异常对象,可以是运行期异常对象
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常

在这里插入图片描述

在这里的时候出现了异常,我们做的就是把他抛出去,因为这个异常不一定存在,所以我们就用throws
在这里插入图片描述
这样就OK了。

在这里插入图片描述
这个是在方法内部进行的抛出一个对象

接下来我们自定义一个异常,因为在有些时候。我们的需要用一些Java中没有给定的异常来约定一些范围,所以我们就可以自定义一个异常来达到我们想要达到的目的

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

异常的注意事项
子类重写了父类方法的时候,子类的方法必须抛出相同的异常或父类异常的子类,
或者子类不抛出异常。
如果父类抛出多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,
子类不能抛出父类没有的异常,或者子类不抛出异常
如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常那么子类只能try不能用throws

如何使用异常处理
原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,就是用throws
区别:
后续程序需要继续运行就try
后续程序不需要继续运行就throws
如果没有JDK对应的异常,则自定义异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值