刚开始学习异常,但是有些异常的使用问题不是很明白
例如自定义异常是用来做什么的呢?为了在日志中写入记录?
functionName () throws SomethingException
{
}
这样的意思是这个方法可能会抛出异常是吗?
和
functionName ()
{
if (ture)
{
throw new Exception();
}
}
有什么区别呢?
另外就是异常一般是怎么使用的?
------解决方法--------------------------------------------------------
不一样的。
首先,你的第一个程序,后面的throws关键字的确是告诉大家,我这个类是有可能会抛出异常的。但是还有一个意思,就是说,如果要使用我这个类,必须首先把我的实例放在try catch中,不然我不管代码出不出错,都要报错。
就好比File类,io包的,就是这样的。因为很容易出现文件不存在等异常,所以要放在try catch中 —— 这首先是必要性的问题,因为容易出问题,放里面安心。其次,SUN在编写File类的时候,就使用了throws来规定所有使用本类的程序员都必须要实现对本类的异常捕捉。
至于你后面一个例子。
那是在向外抛出异常,性质不一样的。一个是程序的动作,是'动词'。一个是定义了程序的行为,是'状语'。
------解决方法--------------------------------------------------------
你后一个根本通不过编译,checked异常必须catch或者向前一种那样throws,只有RuntimeException和他的子类是unchecked,一般自己不会throw这种unchecked异常的,其实第一种也是有throw new Exception()这个概念的,可以去看这个方法的源码,不过有的是通过native方法throw 出来的