黑马程序员_java 异常之throws、throw 和 RuntimeException

来源:互联网 发布:演绎法和归纳法 知乎 编辑:程序博客网 时间:2024/05/29 23:43

 ---------------------- android培训、java培训、期待与您交流! ----------------------

继承Exception原因:
异常体系有一个特点:因为异常类和异常对象都被抛出。
他们都具备可抛性,这个可抛性是Throwable这个体系中独有特点。

只有这个体系中的类和对象才可以被throw和throws操作。

 throws和throw区别
  
   throws使用在函数上
   throw使用在函数内
  

   throws后面跟的异常类。可以跟多个,用逗号隔开
   throw后跟是异常对象。


案例: 


class Demo
{
 int plus(int a,int b)
 {
  if(b==0)
     throw new ArithmeticException("被零除了");
  return a/b;
 }
}

class ExceptionDemo
{
 public static void main(String[] args)
 {
  Demo d = new Demo();
  int x = d.plus(3,0);
  System.out.println("x=" + x);
 }
}

在这里发现ArithmeticException这个异常非常特殊,在函数内抛了不用在函数上声明

Exception 中有一个特殊的子类异常RuntimeException  运行时异常。
如果在函数内抛出异常,函数上可以不用声明,编译一样通过。

如果在函数上声明了异常,调用者可以不用进行处理,编译一样通过。

之所以不用在函数上声明,是因为不需要上调用者处理,
当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修正。


自定义异常时,如果该异常的发生,无法在继续进行运算,
就让自定义异常继承RuntimeException。

           public Test() throws RepletException {
           try {
            System.out.println("Test this Project!")
         }
      catch (Exception e) {
        throw new Exception(e.toString());
           }
     }

throws是用来声明一个方法可能抛出的所有异常信息。
throw则是指抛出的一个具体的异常类型。
通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。
throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法。
throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛。

---------------------- android培训、java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

原创粉丝点击