异常处理机制的简单介绍

异常的处理:

  • 异常机制的本质就是:当程序出现问题时,能使程序安全的退出。
    1.抛出异常:
  • 在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前的执行路径,并把异常对象提交给JRE
    2.捕获异常
  • JRE得到该异常后,寻找相应的代码来处理该异常,JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止。

异常的分类:
Throwable是所有异常的根类,位于java.lang.Throwable

  • Error (错误,是由虚拟机内部出现的问题,不是代码块的问题)

  • Exception(异常)
    RunTimeException(运行时异常):
    CheckedException(已检查异常):

RunTimeException(运行时异常):一般是逻辑的错误引起的异常
nullPointException:当一个对象是空的时候,如果去调用该对象的属性和方法。
解决:判断是否为空,才能调用相应的属性和方法。

  • classCastException(强制转型):

  • ArrayIndexOutBoundsException(数组越界异常):

  • NumberFormatException(数字格式化异常):
    解决:可以利用正则表达式。

  • CheckedException(已检查异常):编译器会报错。
    一般抛出或者用try/catch捕获:
    try/catch:
    throws:

public class TestException {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FileReader reader=null;
		try {
			reader=new FileReader("D:/java/java.txt");
			char c1=(char)reader.read();
			System.out.println(c1);
		} catch (FileNotFoundException e) {//FileNotFoundException是IOException的子类,
			//catch可以有多个
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {//子类异常放在父类异常的前面
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{//只能有一个
			try {
				if(reader!=null)
				reader.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}

可以利用throws直接抛给调用者,或者层层外抛,最后抛给JRE

public class TestException {

	public static void main(String[] args) throws IOException {
		//可以直接抛出,抛给调用者
		// TODO Auto-generated method stub
		FileReader reader=null;
			reader=new FileReader("D:/java/java.txt");
			char c1=(char)reader.read();
			System.out.println(c1);
				if(reader!=null)
				reader.close();
			
		}
	}

发布了43 篇原创文章 · 获赞 11 · 访问量 2583

猜你喜欢

转载自blog.csdn.net/weixin_43328816/article/details/104259739