首页 > 学院 > 开发设计 > 正文

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

2019-11-15 00:15:20
字体:
来源:转载
供稿:网友
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以后, 类名可以直接简写,不在需要 包名.类名 的形式书写了.

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表