`
jackleechina
  • 浏览: 573012 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

java 复习笔记——异常处理

    博客分类:
  • java
 
阅读更多
1)
对于RuntimeException,通常不需要我们去捕获,这类异常由Java运行系统自动抛出并自动处理。
2)
如果父类中的方法抛出多个异常,则子类中的覆盖方法要么抛出相同的异常,要么抛出异常的子类,但不能抛出新的异常(注:构造方法除外)。
3)
我们可以在方法声明时,声明一个不会抛出的异常,Java编译器就会强迫方法的使用者对异常进行处理。这种方式通常应用于abstract base class和interface中。
4)
import java.io.*;
class Excep
{
	Excep() throws ArithmeticException
	{
	}
	public int division(int a,int b) throws ArithmeticException,DivisorIsMinusException//Exception
	{
		//try
		//{
			if(b<0)
				throw new DivisorIsMinusException("Divisor can't be minus");
			return a/b;
		/*}
		catch(ArithmeticException e)
		{
			
			e.printStackTrace();
			throw new Exception("can't divide by zero");
			//throw e;   //继续抛出异常
			//return 0;
		}*/
		
	}
	public int fn1(int a,int b) throws ArithmeticException,DivisorIsMinusException//Exception
	{
		return division(a,b);
	}
}

class ChildExcep extends Excep//子类中的覆盖方法要么抛出相同的异常,要么抛出
                         //异常的子类,但不能抛出新的异常(注:构造方法除外)。

{
	ChildExcep() throws FileNotFoundException
	{
	}
	public int division(int a,int b) throws ArithmeticException,DivisorIsMinusException
	{
		return a/b;
	}
}
class DivisorIsMinusException extends Exception//自定义异常
{
	DivisorIsMinusException(String str)
	{
		super(str);
	}
}
class ExcepTest
{
	public static int method1(Excep excep)
	{
		try
		{
			return excep.division(5,0);
		}
		catch(ArithmeticException e)
		{
			System.out.println(e.toString());
		}
		catch(DivisorIsMinusException ex)
		{
			System.out.println(ex.toString());
			//System.exit(-1);
			//return;
		}
		return 0;
	}
	public static void main(String[] args) //throws Exception
	{
		ChildExcep ce=new ChildExcep();
		method1(ce);
		Excep excep=new Excep();
		try
		{
			//excep.division(5,0);	
			excep.fn1(5,-1);
			System.out.println("exception");
			return;
		}
		
		catch(ArithmeticException e)
		{
			System.out.println(e.toString());
		}
		catch(DivisorIsMinusException ex)
		{
			System.out.println(ex.toString());
			System.exit(-1);   //执行此句后,不执行finally语句
			//return;
		}
		catch(Exception e)//放到最后,先写具体的异常捕获
		{
			//System.out.println("can't divide by zero");
			//System.out.println(e.getMessage());
			//System.out.println(e.toString());
			e.printStackTrace();
		}
		finally//始终会被执行,除了在此之前执行了System.exit(-1);
		{
			System.out.println("finally");
		}
		System.out.println("finish");
	}
}


摘自:孙鑫老师java视频
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics