Java异常

1. 异常机制

1.1 异常概念

异常机制本质:当程序出现错误,程序安全的退出,处理完继续执行的机制

异常Exception,指的是程序运行过程中出现的非正常现象,例如用户输入错误,除数为零,需要处理的文件不存在,数组下标越界等。

在Java的异常处理机制中,采用很多用来描述和处理异常的类,称为异常类,异常类中定义包含了该类异常的信息和对异常进行处理的方法。

所谓异常处理,就是指程序在出现问题时依然可以正确的执行完。

public class TestException01 {
	public static void main(String[] args) {
		System.out.println("step1");
		try {
			int i = 1/0;  //这个会产生异常
		}catch(Exception e) { //捕获异常
			e.printStackTrace();   //如果没有这玩意step2不会执行,程序结束
		}
		
		System.out.println("step2");
	}
    
}

Java是采用面向对象的方式来处理异常,处理过程:

  • 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象交给JRE

  • 捕获异常:JRE得到该异常后,寻找相应的代码来处理异常,JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止。

1.2 异常分类

Throwable下面又派生了两个子类:Error和Exception

注意Exception即可,Error处理不了

UncheckedException是运行时异常,CheckedException编译通不过  

2. 异常处理

2.1 捕获异常

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class TestCatchException {
	public static void main(String[] args) {
		FileReader reader = null;
		try {
			reader = new FileReader("d:/a.txt");
			char c = (char) reader.read();
			char c2 = (char) reader.read();
			System.out.println(""+c+c2);
			
		}catch(FileNotFoundException e) {
			e.printStackTrace();
		}catch(IOException e) {
			e.printStackTrace();
		}finally {
			try {
				if(reader !=null) {
					reader.close();
				}
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
	}
}

2.2 声明异常

利用throws

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Test03 {
	public static void main(String[] args) throws IOException {
		FileReader reader = null;

		reader = new FileReader("d:/a.txt");
		char c = (char) reader.read();
		char c2 = (char) reader.read();
		System.out.println(""+c+c2);

		reader.close();
	}
}

2.3 try-with-resource

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Test04 {
	public static void main(String[] args) {
		try(FileReader reader = new FileReader("d:/a.txt");){
			char c = (char) reader.read();
			char c2 = (char) reader.read();
			System.out.println(""+c+c2);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值