java中异常的throw和throws不理解,高分求解答

书上的代码,格式写我自己习惯的:
class MyMath
{
public int div(int x,int y)throws Exception
{
int result=0;
try
{
result=x/y; //除法计算
}
catch (Exception e)
{
throw e; //向上抛,这个我不理解
}

class TestDemo
{
public static void main(String [] args)
{
try
{
System.out.println(new MyMath().div(10,0))l;
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

我不理解的地方:

第一:
为什么div函数里要try,可以不try吗?如果是直接声明异常,然后直接抛给调用者,让调用者try可以吗?
就像这样:
public int div(int x,int y)throws Exception
{
int result=0;

result=x/y; //除法计算
}

第二:
throw关键字不是很理解,我的理解是它可以在函数内手工抛出一个异常,然后要么try要么抛给调用者,这样理解对吗?
就如下代码,我自己抛出了一个异常,所以我必须得try否则程序就停止运行,如果我不try那我就必要在函数后面写throws Exception
调用者去处理,这样理解对吗?
try
{
throw new Exception("我抛着玩的");
}
catch (Exception e)
{
e.printStackTrace();
}

第三:
throw e我不理解,意思是不是把异常抛给div函数,然后div函数又抛给调用者?

第1个回答  2018-02-12
throws是方法体签名使用,也就是只能用在方法的后面,比如main()throws servlet Exception,IOException就表明这个方法会抛出Exception,IOException异常,至于具体抛出什么异常,不用我们操心,JVM会处理。比如你用到了File类的一些方法,如果你不给这个方法声明抛出异常,那么它就会报错。处理这个报错有两种方法,一种是在方法体内写try{}cathc{}方法块进行判断,另一种是直接在方法体后声明抛出异常,交给java处理。
而throw是抛出一个具体的异常实例,是要写在方法体里面的。比如throw new Exception()等等。
题主可以仔细观察一下。
try{}catch{}finally()是java 的异常处理机制,
try{可能出现异常的语句}
catch{发生异常时进行处理}
finally{始终要进行处理的语句}
有参考,如果帮到题主希望采纳!
相似回答