9159金沙游艺场-奥门金沙游艺场-[欢迎您]

9159金沙游艺场为您呈现最新的面貌!,目前注册送体验金,欢迎您将成为影视娱乐行业新的风向标,是亚洲的优质娱乐先锋。

java学习笔记359159金沙游艺场

日期:2019-10-07编辑作者:前端

Java学习笔记35(至极),java学习笔记35

代码在运作中生出的主题素材正是十三分

java中把几种要命封装三个类,当程序出现难点时候,就能够创立足够类对象并且抛出有关消息

 

非常种类:

Throwable类是Java中有着错误或特别的父类

Throwable的子类Error类是具有错误的父类

Throwable的另多个子类Exception类是享有非常的父类

在开辟中,相对来说,大家并不关注错误,而更尊敬非凡

充足和错误的分歧(通俗解释):

不行:约等于壹个人感冒了,吃药睡觉等张开相应的操作就能够痊愈,不修改代码管理掉那么些,程序还足以施行

错误:也正是壹个人得了绝症,不能够治愈,必得修改代码,程序本事够实行

故而可以如此理解:大家并不关注患了绝症的人,而会想办法去治愈得了小病的人

示例:‘

package demo;

public class Demo {
    public static void main(String[] args) {
        function1();
        function2();
    }
    public static void function1(){
        //异常
        int[] arr = {1,2};
        System.out.println(arr[3]);
        //输出:
        //Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
        //at demo.Demo.function1(Demo.java:11)
        //at demo.Demo.main(Demo.java:5)
    }
    public static void function2(){
        //错误
        int[] arr = new int[666666666];
        System.out.println(arr);
        //输出:
        //Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        //at demo.Demo.function2(Demo.java:19)
        //at demo.Demo.main(Demo.java:6)
    }
}

 

如若那些被抛出了,前边的主次都不会施行,由此要想方法消除这几个主题素材

 

不行中的关键字throw:

写一段代码,存在空指针分外

package demo;

public class ExceptionDemo {
    public static void main(String[] args) {
        int [] arr = null;
        function(arr);
    }
    public static int function(int[] arr){
        int i = arr[arr.length-1];
        return i;
    }
}

投入throw关键字,抛出格外:

package demo;

public class ExceptionDemo {
    public static void main(String[] args) throws Exception {
        int [] arr = null;
        int i = function(arr);
        System.out.println(i);
    }
    public static int function(int[] arr) throws Exception{
        //如果方法中有异常,需要在方法上声明:throws Exception
        //抛出的类型和声明的异常类应当一致
        //main调用这个方法,也需要加入声明
        if(arr == null){
            //抛出异常,告诉调用者
            //手动抛出异常
            throw new Exception("传递数组不存在");
        }
        if(arr.length == 0){
            throw new Exception("传递的数组中没有元素");
        }
        int i = arr[arr.length-1];
        return i;
    }
}
/*
输出:
Exception in thread "main" java.lang.Exception: 传递数组不存在
at demo.ExceptionDemo.function(ExceptionDemo.java:16)
at demo.ExceptionDemo.main(ExceptionDemo.java:6)
*/

这里注意,若是是运作时这个(RuntimeException),不要求throws证明 ,

与此同不常候只要产生这种非常,那么必得改代码,不然代码无意义

 

try  catch方法十分处理:

package demo;

public class ExceptionDemo {
    public static void main(String[] args) {
        int[] arr = null;
        try {
            int i = function(arr);
            System.out.println(i);
        } catch (NullPointerException ex) {
            System.out.println(ex);
        } catch (ArrayIndexOutOfBoundsException ex) {
            System.out.println(ex);
        }
        System.out.println("结束");
    }

    public static int function(int[] arr) throws NullPointerException, ArrayIndexOutOfBoundsException {
        if (arr == null) {
            // 手动抛出空指针异常
            throw new NullPointerException("数组不存在");
        }
        if (arr.length < 6) {
            // 手动抛出数组索引越界异常
            throw new ArrayIndexOutOfBoundsException("数组没有6索引");
        }
        return arr[6];
    }
}
/*
输出:
java.lang.NullPointerException: 数组不存在
结束
 */

那边发掘,就算前后相继有相当,然而照旧施行前边的代码,那正是不行管理

 

catch的顺序:

平级:

package demo;/*
 * catch处理的注意事项:
 *   有顺序
 *   当异常是平级的时候,即没有继承关系的时候,没有顺序限制 
 */
public class ExceptionDemo {
    public static void main(String[] args) {
        try {

        } catch (NullPointerException e) {

        } catch (ArrayIndexOutOfBoundsException e) {

        }
    }
}

有继续关系:

package demo;
//有继承关系:越高级的写在越靠后
public class ExceptionDemo {
    public static void main(String[] args) {
        try {

        } catch (NullPointerException ex) {

        } catch (RuntimeException ex) {

        } catch (Exception ex){

        }
    }
}

 

 

finally:

package demo;

//finally:必须执行
//是否有异常都会执行
public class ExceptionDemo {
    public static void main(String[] args) {
        try {
            function(1);
        } catch (Exception ex) {
            System.out.println(ex);
        } finally {
            System.out.println("代码必须执行");
        }
    }

    public static void function(int a) throws Exception {
        if (a == 0) {
            throw new Exception();
        }
        System.out.println(a);
    }
}
//无论传入什么,都会输出:代码必须执行

 

注意事项:

1.父类的章程假如抛出十分,子类重写后方可不抛出特别,然则子类即便要抛出特别,那一个丰富的接轨关系无法超越父类的十一分

 

自定义分外:

不经常须要有的自定义的老大,这里做三个演示:

package demo;

public class FuShuException extends RuntimeException {
    public FuShuException(String string){
        super(string);
    }
    public FuShuException(){}
}

package demo;

//设置一个情景,计算两门成绩的平均数,不能为负数
//如果是一个负数,就抛出异常
public class ExceptionDeno {
    public static void main(String[] args) throws FuShuException {
        try {
            int i = function(10, 97);
            System.out.println(i);
        } catch (FuShuException ex) {
            ex.printStackTrace();
        }
    }

    public static int function(int a, int b) throws FuShuException {
        if (a < 0 || b < 0) {
            throw new FuShuException("成绩不为负");
        }
        int sum = a + b;
        return sum / 2;
    }
}

 

代码在运转中发出的难点正是那些java中把二种极其封装七个类,当程序出现难点时候,就能创设异...

本文由9159金沙游艺场-奥门金沙游艺场-[欢迎您]发布于前端,转载请注明出处:java学习笔记359159金沙游艺场

关键词:

SSL在HTTPS和MySQL中的原理考虑

之前对HTTPS通信过程有过了解,HTTPS是应用HTTP协议使用SSL加密的版本,在TCP和HTTP之间增加SSL协议。通过握手阶段认证...

详细>>

TensorFlow安装与测试

TensorFlow安装与测试 TensorFlow官网: 安装步骤: 1、sudo apt-get install python-pip python-dev python-virtualenv 2、virtualenv --system-...

详细>>

输出格式为

Map集合应用 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)...,mapabcdekka27...

详细>>

Spark源码分析之SparkContext概述

本篇文章就要根据源码分析 SparkContext 所做的一些事情,用过Spark的开发者都知道SparkContext是编写Spark程序用到的第一...

详细>>