异常分类,异常抛出位置
异常(Exception)
在Java中用类的形式对不正常进行描述和封装对象,描述不正常的情况的类成为以异常类。并且将正常代码流程和问题处理代码相分离,提高了阅读性。
问题很多,意味着描述的类也很多,将其进行向上概括抽取,形成异常体系。
Throwable:无论是Error还是异常都能在问题发生时抛出,让调用者知道并处理
(一)、一般不可处理的,Error;
(二)、可处理的,Exception。
class FushuIndexExexception extends Exception
{
FushuIndexExexception()
{}
}//自己定义的函数
class Demo
{
public int method(int []arr ,int index) throws FushuIndexExexception//在函数标注处用throws,表示抛出
{
if(index>=2)
{
throw new NullPointerException("数组的引用不能为空");//在函数内注处用throws,表示抛出
}
if(index<= 0)
{
throw new FushuIndexExexception();
}
return index;
}
}
public class text {
public static void main(String[] args) throws FushuIndexExexception//在函数标注处用throws,表示抛出
{ int []arr=new int[20];
Demo d=new Demo();
int num=d.method(arr,-10);
System.out.println(num);
}
}
异常的分类:
(一)编译时被检测到异常:只要是Exception和其子类都要,除了特殊子类RuntimeException体系;
(这种问题在一出现实,希望在编译时被检测,让这种问题有对应的处理方式)
(二) 编译时检测不到异常(运行时检测到异常):就是Exception中的RuntimeException和其子类;(这种问题的发生无法让功能继续,运算无法进行,更多是因为调用的原因造成的,或者引发内部状态的改变导致的,这种问题一般不处理,让编译通过,让编译时强行停止,进行编码修改)
在自定义异常时,要么继承Exception,要么继承RuntimeException
throws和throw的区别:
- throw使用在函数内;
throws使用在函数上;
- throws抛出异常类,可以抛出多个,用逗号隔开;
throw抛出的是异常对象