Java基础笔记-异常总结,包

异常:是对问题的描述,将问题进行对象封装,

异常的体系:

Throwable:

  1.Error

  2.Exception

    1.RuntimeException

异常体系的特点:

异常体系中的所有类以及建立的对象都具备可抛性。
可以被throw和throws关键字所操作,只有异常体系具备这个特点。

 

throw和throws的用法区别:

throw定义在函数内,用于抛出异常对象。

throws定义在函数上,用于抛出异常类,可以抛出多个并用逗号隔开。

当函数内容有throw抛出异常对象,并未进行trycatch处理时,必须要在函数上throws声明,否则会编译失败。
RuntimeException除外,当函数内如果抛出的是RuntimeExcpetion异常,函数上可以不用声明。

 

异常处理语句:
try
{
   需要被检测的代码;
}
catch ()
{
   处理异常的代码;
}
finally
{
   一定会执行的代码;
}

finally:一定会被执行的代码,通常定义的是用于关闭资源的代码.

特殊情况:当在finally语句之前执行了System.exit(0); 语句时,finally语句不会被执行.

 

自定义异常:

 定义类继承Exception或者RuntimeException  

1.为了让自定义类具备可抛性。  

2.让该类具备操作异常的共性方法。

当要定义自定义异常的信息时,可以使用父类已经定义好的功能.将异常信息传递给父类的构造函数。

class xxxException extends Exception

 {   

  xxxException(String message)   

  {    

    super(message);   

  }

 }

自定义异常:根据Java中的面向对象思想,将程序中出现的特有问题进行封装。

在子父类覆盖时:
 1.子类抛出的异常必须是父类的异常的子类或者子集。
 2.如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能trycatch处理而不能用throw/throws抛出。

  1 /*
  2 求圆,和长方形的面积
  3 */
  4 class NoValueException extends RuntimeException //Exception
  5 {
  6     //private String message;
  7         NoValueException(String message)
  8         {
  9                 super(message);        
 10         }
 11 }
 12 
 13 /*
 14 abstract class Shape
 15 {
 16      abstract void getArea();
 17 }
 18 
 19 class rec extends Shape
 20 */
 21 //接口也是一种抽象方法
 22 interface Shape
 23 {
 24     void getArea();
 25 }
 26 class Rec implements Shape 
 27 {
 28         private int len,wid;
 29         Rec(int len,int wid) //throws NoValueException
 30         {
 31             if(len<=0 ||wid<=0)
 32                     throw new NoValueException("len,wid的值非法");
 33             /*
 34                 {
 35                     System.out.println("len,wid值非法");
 36                 }
 37             */
 38                 
 39                     this.len = len;
 40                     this.wid = wid; 
 41                 
 42         }
 43         public void getArea()
 44         {
 45             System.out.println("长方形的面积是:"+len*wid);
 46         }
 47 }
 48 class Circle implements Shape
 49 {
 50         private double radius;
 51         public static  final double PI = 3.14;
 52         Circle(double radius) throws NoValueException
 53         {
 54                 if(radius<=0)
 55                         throw new NoValueException("出现了非法值的情况");    
 56                         
 57                 this.radius = radius;
 58         }
 59         public void getArea()
 60         {
 61                 System.out.println("圆的面积是:"+radius*radius*PI);
 62         }
 63     
 64 }
 65 
 66 class ExceptionTest2
 67 {
 68     public static void main(String args[])
 69     {
 70         /*
 71         //继承的是Exception时.
 72                 try
 73                 {
 74                         Rec r = new Rec(-3,4);    
 75                         r.getArea();
 76                 }
 77                         catch(NoValueException e)
 78                 {
 79                         System.out.println(e.toString());
 80                 }    
 81         */        
 82         //继承的是RuntimeException时,可以不需要进行try操作.出现异常程序会停止.
 83                 Rec r = new Rec(3,4);    
 84                 r.getArea();
 85                 
 86                 
 87                 try
 88                 {
 89                         Circle c = new Circle(-3);
 90                         c.getArea();
 91                 }
 92                 catch(NoValueException e)
 93                 {
 94                         System.out.println(e.toString());
 95                 }
 96                 
 97 
 98         
 99         
100     }
101         
102 }

 

包:package

作用:让源文件与类文件相分离.

格式:

package 包名; //该定义语句要定义在代码的第一行.(最上方)

有了包名以后,类名的全称就是: 包名.类名 (该类要在包上)

当包中的类相互继承以后,可以访问被protected修饰的属性和方法.包与包之间可以使用的权限有两种:public和protected

四种权限之间能否能访问如下所示:

        public    protected    default(默认权限)    private

同一个类中    Ok      Ok        Ok          Ok

同一个包中    Ok      Ok        Ok          No

子类       Ok      Ok        No          No

不同包中       Ok      No        No          No

注意: 在一个java文件中,不能有两个或者两个以上的公有类或者接口.

 

导入:import关键字.

作用,用于简化类名的书写.当import以后, 类名可以直接简写,不在需要 包名.类名 的形式书写了.

 

面向对象好像终于学完了,好多还是不是很懂,不过时间不等人,只能边自学后面的边继续看面向对象的有关知识了.

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。