JAVA---异常处理

异常处理

异常:程序在运行过程中发生由于硬件设备问题、软件设计错误等导致的程序异常事件
(在Java等面向对象的编程语言中)异常本身是一个对象,产生异常就是产生了一个异常对象
public class abnormal {
	public static void main(String[]args)
	{
		try{
		System.out.println(6/0);
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}

Throwable是所有异常的根
Error是系统错误,程序员无法处理这些异常
Exception是程序员可以捕获并且处理的异常
RuntimeException的子类异常是你可以处理可以不处理的异常
凡是继承自Exception但又不是RuntimeException子类的异常我们都必须捕获并且处理

public class abnormal {
	public static void main(String[]args)
	{
		int n;
		try{
			n=1;
			System.out.println(n);
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		System.out.println(n);
	}
}
以上代码是有错的, The local variable n may not have been initialized
在try里面代码,会被认为是有可能失败的,既然有可能失败,那么你的n一开始没有被初始化,后面输出当然是错误的
异常的处理机制
当Java程序运行时出现问题时,系统会自动检测到该错误,并且立即生成一个与该错误相对应的异常对象
然后把该异常对象提交给Java虚拟机,Java虚拟机会自动寻找相应的处理代码来执行这个异常如果没有找到,则由Java虚拟机做一些简单的处理之后,程序被强行终止!
程序员可以编写自己的代码来捕获可能出现的异常,并且编写代码来处理相应的异常
import java.io.*;
public class abnormal {
	public static void main(String[]args)throws Exception
	{
		throw new IOException();//必须捕获处理的异常
	}
}
一般我们采用try...catch...也可以使用这种方法,throws Exception,这个方法有可能抛出异常,我们不进行处理,但是我们把这个异常抛给被调用的对象处理

还有一种,try...catch...finally...无论try中的代码是否抛出异常,finally中的代码都会得到执行
finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其他部分以前,能够对程序的状态作出统一的管理,通常,finally语句可以进行资源清理的工作上面,如关闭打开的文件,删除临时文件等。

自定义异常
throw是用来抛出异常,要抛出的异常必须是Throwable子类

import java.io.*;
class B extends Exception
{
	public B()
	{
		System.out.println(123);
	}
}
class A
{
	void fun1()throws B
	{
		throw new B();
	}
}
public class abnormal {
	public static void main(String[]args)
	{
		A aa=new A();
		try{
			aa.fun1();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}





猜你喜欢

转载自blog.csdn.net/qq_36457148/article/details/77622982