zoukankan      html  css  js  c++  java
  • 2020年9月4日 异常

    package com.atguigu.test03;
    
    import java.util.Scanner;
    
    /*
     * 异常:
     *     不正常
     *  在某些情况下,因为用户的一些原因,例如:配置问题、错误输入的问题、用户磁盘空间满了等因素,导致程序无法正常运行。
     *  
     *  不是异常:(1)语法错误(2)逻辑错误
     * 
     * Java的程序如果出现异常,并且在代码中,没有做相应的处理,那么程序会“崩溃”,“挂了”
     * 
     * Java如何处理异常?或Java异常处理的过程?
     * (1)当程序运行到某一句时,发生了异常,那么程序会先停下来
     * (2)程序会在这句代码处,查看原因,生成一个合理“异常对象”,然后“抛”出
     * (3)JVM会检测在这句代码的外围,是否有try..catch结构,可以“捕获”它,
     * 如果可以捕获,那么程序再处理完异常后,继续下面的运行,不会崩溃;
     * 如果不能捕获,那么会把这个异常继续抛给“上级”,如果“上级”能处理,那么程序从“上级"处理完的代码后面继续运行;
     * 如果上级也不能处理,那么继续往上抛,一直到达JVM,那么就“崩溃”
     * 
     * 
     */
    public class TestException {
        public static void main(String[] args) {
    //        System.out.println(a);//语法错误
            
            int sum = getSum(1,2);
            System.out.println("sum = " + sum);
            
                try {
                    testInput();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            
            System.out.println("main的其他代码");
        }
        
        public static void testInput(){
            Scanner input = new Scanner(System.in);
            try {
                System.out.print("请输入一个整数:");
                int num = input.nextInt();
            } catch (ArrayIndexOutOfBoundsException e) {
                System.out.println("输入有误");//这里 只是提醒,没有让他 重新输入
            }
            
            System.out.println("其他的代码");
        }
        
        
        //求两个整数的和
        public static int getSum(int a ,int b){
            return a - b;
        }
    }
    package com.atguigu.test03;
    
    /*
     * 所有类的根父类是Object。
     * 枚举的公共父类是Enum,根父类仍然是Object
     * 异常的公共父类是Throwable,根父类仍然是Object
     * 
     * 1、异常的公共父类:java.lang.Throwable
     * (1)只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句“抛”出。
     * (2)只有此类或其子类之一才可以是 catch 子句中的参数类型。 
     * 
     * 2、Throwable又分为两大派别:
     * (1)Error:错误
     *         一般指严重错误,一般合理的应用程序不应该试图去捕获它。
     *        如果出现这个问题,要么需要升级程序,要么需要升级架构,要么需要升级硬件。
     *        例如:报了一个OutOfMemoryError
     *
     *        经典代表:VirtualMachineError(堆内存溢出OutOfMemoryError,栈内存溢出StackOverflowError)
     * (2)Exception:异常
     *         一般异常,合理的应用程序应该试图去捕获它。
     * 
     * 3、Exception还可以分为两大类:
     * (1)运行时异常(RuntimeException或它子类):又称为非受检异常
     *         编译时,编译器是不会提醒你做处理的,只有运行期间,才会发生。
     *         运行时异常是不建议用try...catch,因为它发生频率太高,而且一般都是很不应该发生的问题。
     *         例如:空指针异常,数组下标越界异常,类型转换异常等,这些异常完全可以避免掉。
     *         但是如果实在没有考虑到,也可以通过try...catch处理。
     * 
     * (2)编译时异常,除了RuntimeException系列以外的,都是编译时异常。又称为受检异常。
     *         编译时,编译器会强制要求程序员编写处理的代码,如果你不编写,那么就编译不通过。
     *         例如:FileNotFoundException,IOException等
     */
    public class TestExceptionType {
        public static void main(String[] args) {
            
        }
    }
  • 相关阅读:
    Swift
    Swift
    Swift
    Swift
    Swift
    Swift
    Swift
    Swift
    Swift
    算法の序列
  • 原文地址:https://www.cnblogs.com/douyunpeng/p/13614488.html
Copyright © 2011-2022 走看看