首先Throwable 是一个异常体系的超类,throws和throw都是用于抛出异常的关键字,
异常体系有一个特点,就是异常类和异常对象都需要被抛出
他们都具备可抛性,这个可抛性是throwable这个体系中的独有特点
这个体系中的类和对象需要throws和throw这两个关键字进行操作
throws和throw的用法:
throws使用在函数上
throw使用在函数内
throws后面跟的是异常类。可以跟多个,用逗号隔开
throw后面跟的是异常对象
自定义异常之前首先要考虑这样一个问题:
既然java能对常见问题进行对象封装,我们能不能对本项目中出现的特有问题进行特有对象封装?
答案必须是肯定的。
首先自定义一个特有异常类去继承Exception
但是要注意这里面有个及其特殊的情况不能继承Exceprion而要继承RuntimeExceprion
这个情况是自定义异常时,如果该异常的发生,无法再继续进行运算的话,就需要让自定义的异常类继承RuntimeException,对于“怎样算是无法继续进行运算情况”我自己的理解就是,比如你是程序员,对方是调用者,作为程序员,出现某一种特殊问题时,你想要强制调用者去修改代码,而不是抛来抛去,这时后就继承RuntimeException。在书写格式上作为RuntimeException的子类如果在函数内抛出了,函数上不用声明。
//下面上例子
- class FuShuException extends Exception
- {
- FuShuException(String msg)
- {
- super(msg);
- }
- }
- class Demo
- {
-
- int div(int a,int b)throws FuShuException
- {
- if(b<0)
- throw new FuShuException("/负数");
- return a/b;
- }
-
- }
- class Hello
- {
- public static void main(String[] args)
- {
- Demo d = new Demo();
- try
- {
- int x = d.div(4,-1);
- System.out.println("x="+x);
- }
- catch (FuShuException e)
- {
- System.out.println(e.toString());
-
- System.out.println("!除数为负数了");
- }
- System.out.println("over");
- }
- }
复制代码 |