/*
JAVA异常
catch可以跟出多个异常,
catch(Exception e)所有的异常都是Exception的了类,Exception可以处理所有的异常;所以Exception不可以放在第一个catch
throws关键字标识,
自定义异常与Throw关键字
finally{} 无论是return,break语句或者发不发生异常,该语句都会被执行;唯一不被执行System.exit(0);
*/
//下面一段程序是三种异常的实现,包含自定义异常
class Test
{
public int devide(int x,int y)throws ArithmeticException,DevideByMinusException//未报告的异常 java.lang.Exception;必须对其进行捕捉或声明以便抛
{
if(y<0)
throw new DevideByMinusException("除数为"+y);
int result=x/y;
return result;
}
}
class DevideByMinusException extends Exception
{
public DevideByMinusException (String msg)
{
super(msg);
}
}
class TestException
{
public static void main(String[] args)//throws Exception
{
try
{
//new Test().devide(3,1);
//return;
new Test().devide(3,-1);
//new Test().devide(3,0);
}
catch(ArithmeticException e)
{
System.out.println("program is running into AritMetic");
e.printStackTrace();
}
catch(DevideByMinusException e)
{
System.out.println("program is running into DevideByMinus");
e.printStackTrace();
//return;
System.exit(0);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
finally
{
System.out.println("finally");
}
System.out.println("program is running here!");
//Exception in thread "main" java.lang.ArithmeticException: / by zero
}
}
//通过异常可以实现程序的跳转/*void fun(){ try ( if(x==0) throw new XxxException("xxx"); else throw new YyyException("yyy"); .... ) catch(XxxException e) ( .... ) catch(YyyException e) ( .... )}*/