Java中try-catch-finally用法

讲解

try-catch结构

Java提供了一个“捕获”的处理器,为什么要提供一个“捕获”的处理器呢
如果程序出错时,你终止程序?比起抛出异常,让人们自己寻找其中的问题要好?
比如:

package Lesson;

import java.io.*;
import java.net.*;
public class Lesson_17
{
	public static void main(String[] args)
	{
		FileReader fr =null;//设fr为空
		//读取文件
		fr =new FileReader("d:\\ARE.txt");
	}
}

呵呵呵呵呵,D盘没有ARE.txt这个文件
上面的文字且不看,就说运行吧,起码运行不了
在这里插入图片描述
要加try-catch才能运行,为什么?
如果你不加try-catch,那么……(没有什么,Java必须让你加try-catch)
好,如果不加try-catch且程序可以运行,那么👇


首先我D盘莫得有ARE.txt这个文件,你程序找不到,继续往下执行?(假设还有语句)
其次你弹出“程序终止”,我不知道我错在何处,会把你这个编译器给:
在这里插入图片描述
👆图就是不加try-catch的下场
如果你加了try-catch,那么会有几个好处:找不到文件会直接抛出异常,提示你什么什么错了,方便修改
它的流程可以这么表示:
1.try里面的语句是否异常
2.如果异常,就中断try里的代码,执行catch里面的代码
3.继续执行try-catch外的语句
注意事项
1.如果有多个catch块,则进入匹配异常的那个catch
2.儿子的本事不能比父亲大
3.儿子要开放
4.儿子要孝敬父亲,不能惹更多的事,不然要连累父亲
父亲and儿子的try-catch代码

package lesson_26;

import java.io.FileReader;

public class Lesson_26_1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		// TODO 自动生成的方法存根
		Father father =new Father();
		father.test1();
	}
}

@SuppressWarnings("unused")
class Father
{
	private Son son=null;
	public Father()
	{
		son =new Son();
	}
	
	public void test1() throws Exception
	{
		System.out.println("1");
	/*	try{
			son.test2();
		}catch(Exception e){
			System.out.println("父亲");
			e.printStackTrace();
		}*/
	}
}

@SuppressWarnings({"resource","unused"})
class Son
{
	public void test2() throws Exception
	{
		FileReader fr =null;
		fr =new FileReader("d:\\dd.txt");
	}
}

感受try-catch的威力

//面对疾风吧
FileReader fr =null;
try
{
	//咱们先尝试下面的代码有没有错
	//1.如果没错,那么会执行A处代码
	//2.如果有错,那么会执行catch里面的代码
	fr =new FileReader("D:\\ARE.txt");
	System.out.println("No Q");//A处
	//没有问题执行上面代码
}
catch(Exception e)//好不凑巧出错了
{
	System.out.println("No A");
	e.printStackTrace();//打印错误代码
}
System.out.println("我出来了");
System.exit(-1);//异常退出

结果(无ARE.txt的)
在这里插入图片描述
结果(有ARE.txt的)
在这里插入图片描述

try-catch-finally结构

finally代表结束
那么try-catch我们懂了,Java中还有try-catch-finally结构
它的流程还是跟try-catch差不多:
1.如果try中有异常,进入catch
2.执行catch里的代码,然后进入finally
3.执行finally语句,再执行try-catch-finally结构外的语句


注意事项
不管你有多少个catch块,终究还要执行finally块,try-catch-finally这个结构,我们逃不了finally块,必须执行finally块语句,才能结束该结构


使用范围
如果使用Java做一个文件流,那么try-catch-finally这个结构很普遍,finally块的作用是关闭文件流,不然你的文件……全部空!


宾果!try-catch-finally用法已经讲完

感受try-catch-finally的威力

package lesson_26;

import java.io.*;    
import java.net.*;
@SuppressWarnings({"unused"/*,"resource"*/})
public class Lesson_26 {
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		//检查异常:打开文件
		FileReader fr =null;
		try
		{
			//在出现异常的地方,就停止执行代码,
			//然后进入到catch
			//如果,你有多个catch语句,则进入匹配异常的那个catch
			System.out.println("go on");
			fr =new FileReader("d:\\45.text");
			Socket s =new Socket("192.168.1.23",78);
		}
		catch(Exception e){
			//把异常的信息输出,利于排除bug
			System.out.println("111");
			//System.exit(-1);
			//System.out.println("message="+e.getMessage());
			e.printStackTrace();
			//处理
		}finally{
			System.out.println("进入finally");
			//这个语句块,不管有没有异常,都会执行
			//一般说,把需要关闭的资源.[文件,链接,内存...]关闭
			if(fr!=null)//判断
			{
				try{
					fr.close();
				}catch(IOException e){
					e.printStackTrace();
				}
			}
		}
		System.out.println("OK1");
	}
}

完结,撒花

喜欢的可以点赞+关注哦

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值