zoukankan      html  css  js  c++  java
  • Java学习笔记三.3

    9、异常处理:Java中的异常处理对象就是将以前的if语句进行的判断进行抽象化,并形成的一套错误处理体系。最顶端是Throwable,接着是Error,Exception,其中Exception又明显分为两类:RunTimeException和其他。

     1 public class Exceptions {
     2     public static int function(int[] arr,int index) throws FuShuIndexException    //自定义错误类声明抛出
     3     {
     4         /*注意Java自带错误处理类不需要throws关键字进行声明抛出就可以使用,
     5          * 是因为这些类继承自RunTimeException,该异常及其子类编译时不被检测
     6          * 但是运行时会报错,并且直接中断程序运行
     7          */
     8         if(arr==null){
     9             throw new NullPointerException("传入数组为空指针!");
    10         }
    11         if(index>arr.length-1){
    12             throw new ArrayIndexOutOfBoundsException("哥们,数组角标越界了!");
    13         }
    14         if(index<0){
    15             throw new FuShuIndexException("不能使用负数角标");
    16         }
    17         return arr[index];
    18     }
    19     public static void main(String[] args) throws FuShuIndexException        //调用处抛出
    20     {
    21         int[] arr={1,2,3,4};
    22         /*经过catch的处理就相当于解决异常,后续操作可以继续执行
    23          * 并且如果一段代码可以检测多个异常,则需要多个catch语句,但是只能接受第一个错误
    24          * catch语句如果接受Exception类型的对象,由于多态特性(子类可以替代父类使用)
    25          * 此时,该语句可以接受任意类型的异常,所有如果有该句应该放在最后
    26          */
    27         try{
    28             int a=function(null,2);
    29             System.out.println(a);
    30         }catch(FuShuIndexException F){
    31             System.out.println("负数角标异常!");
    32             System.out.println("message:"+F.getMessage());
    33             //sop会将内容转换为字符串在输出,对象也不例外,所以会自动执行toString()操作
    34             System.out.println("string:"+F.toString());
    35             /*getStackTrace()方法可以获取错误的详细信息
    36              * printStackTrace()是将错误信息打印到控制台上,这是jvm默认使用的方法
    37              */
    38             F.printStackTrace();
    39         }catch(NullPointerException N){
    40             System.out.println("传入数组为空指针!");
    41         }catch(Exception E){
    42             System.out.println("其他错误");
    43         }
    44         //finally语句总会执行,所有通常用于关闭/释放资源
    45         finally{
    46             System.out.println("over");
    47         }
    48         System.out.println("end");
    49     }
    50 }
    51 /*Java中错误最顶端是Throwable类 ,所有的可用方法都在其中定义了,子类可以直接使用。
    52  * 自定义错误类必须继承异常体系(通常是Exception/RuntimeExcetion),以便可以抛出,
    53  * 并且按照规范应该以父类作为类名的结尾,提高阅读性
    54  * 自定义的错误类如果想要被Java处理,必须使用两种操作:
    55  * 1、声明抛出:就是在需要抛出错误的函数参数后用 throws关键字+自定义错误类名 作为声明抛出,注意可以多抛出
    56  * ()
    57  * !!!注意这里的抛出和Java处理机制中的抛出一样,调用处也需要抛出。
    58  * 2、使用try{}catch(异常类型  变量){}finally{}结构处理
    59  * 上面两种方式如果自己能处理就用2,不能处理就抛出
    60  * !!!注意:错误处理类一般不用进行太多操作,而且超累已经进行了封装,所以可以直接调用就行,
    61  * !!!创建自定义的错误处理类是方便将错误进一步分类
    62  */
    63 class FuShuIndexException extends Exception{
    64     FuShuIndexException(){
    65         
    66     }
    67     FuShuIndexException(String msg){
    68         super(msg);
    69     }
    70 }
    异常

         1、

         2、

         3、

          4、

    10、Object对象简介:这个对象是所有对象的父类,所包含的方法是所有对象抽象出来的,所以其中方法每个对象都可以使用

     1 public class ObjectSuper {
     2     public static void main(String[] args){
     3         ObjectSuperDemo o1=new ObjectSuperDemo();
     4         ObjectSuperDemo o2=new ObjectSuperDemo();
     5         System.out.println(o1==o2);
     6         //其实equals方法就是将o1==o2操作给封装了
     7         System.out.println(o1.equals(o2));
     8         /*Class对象:java中一切皆对象(类也一样,因为包含相同的内容被抽取为类对象)
     9          * 类/接口在加载后会生成一个class文件(即字节码文件),也会在内存中生成一个相应的字节码文件对象(Class对象)
    10          * 注意:一个类在内存中只会存在一份字节码文件对象,new的时候是根据这个对象生成新对象的。
    11          * 使用对象的getClass()可以获取这个对象,也叫运行时Class对象
    12          */
    13         /*toString():下面的println()的参数是字符串类型,所以所有类型都会进行转换
    14          * 其中基本类型直接转换,而对象类型是调用toString()实现的。和equals()一样,
    15          * Object对象对该方法进行了实现,但是子类可以对其进行覆盖
    16          */
    17         System.out.println(o1.getClass());
    18     }
    19 }
    20 class ObjectSuperDemo{
    21     
    22 }
    23 class ObjectSuperDemo1{
    24     ObjectSuperDemo1(int num){
    25         setNum(num);
    26     }
    27     private int num;
    28     public int getNum() {
    29         return num;
    30     }
    31     public void setNum(int num) {
    32         this.num = num;
    33     }
    34     /*覆盖Object的equals()的操作是常见操作,因为其是根据地址来进行判断
    35      * 而在实际中往往需要判断对象特有内容是否相同,此时不必重建新方法,而是重写equals()
    36      * 由于多态和类型转换问题,需要进行健壮性判断
    37      * 总会被重写,而Object中仍有equals方法是因为它是所有对象的父类,如果没有实现(是抽象方法)
    38      * 以后每个类中,不管是否有其他功能,都有先实现该功能,不方便
    39      */
    40     public boolean equals(Object obj){
    41         if(!(obj instanceof ObjectSuperDemo1)){
    42             //return false;
    43             throw new ClassCastException("类型不匹配");
    44         }
    45         ObjectSuperDemo1 o=(ObjectSuperDemo1)obj;
    46         return this.num==o.num;
    47     }
    48     public int hashCode(){
    49         return num;
    50     }
    51 }
    Object对象

    11、包package:使用编译器(如eclipse等)时,当建立一个类,会提示选择包对类进行管理,在windows系统中是以文件夹形式体现的。如果没有使用编译器手动建立Java文件,其中使用package时应该建立相应的文件夹(可以使用javac.exe中的命令/手动建立),并将class文件移入文件夹中才能运行。

    使用包之后的注意点:

    1、注意类名前应该加包名,

    2、注意路径为包的路径,

    3、想要被包外的类访问,必须将类的权限设置为public;并且其中的方法必须是public才能被其他包访问

    使用包的一个问题就是写类时需要加上包名,不方便。Java中可以使用import关键字导入这个包.类文件,然后就可以直接使用类名访问。

    jar包:是将Java中的包文件进行压缩形成的jar文件,jar文件不需要解压就可以被用来访问其中的包

  • 相关阅读:
    ORA-32004 的错误处理
    告警日志
    ORACLE 归档日志打开关闭方法
    oracle归档日志配置查询
    教你如何阅读Oracle数据库官方文档
    使用Oracle安装账户登录数据库
    poj 2186 (强连通缩点)
    poj 2516 (费用流)
    STL集合容器set按照由小到大或者由大到小的顺序存放元素
    Android项目 手机安全卫士(代码最全,注释最详细)之十二 设置中心的界面
  • 原文地址:https://www.cnblogs.com/songfeilong2325/p/4404826.html
Copyright © 2011-2022 走看看