Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 376|回复: 0

JavaSE学习总结(八)—— 异常处理(Exception)

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-7-8 02:21:47 | 显示全部楼层 |阅读模式

    一、理解异常及异常处理的概念

    异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。

    异常不是错误

    程序中关键的位置有异常处理,提高程序的稳定性

    二、掌握Java异常处理机制

     Java的异常处理是通过5个关键字来实现的

    try:尝试,把有可能发生错误的代码放在其中,必须有

    catch:捕获,当发生异常时执行

    finally:最终,不管是否有异常都将执行

    throw:抛出,引发异常

    throws:抛出多个,声明方法将产生某些异常

     

    三、掌握try 、catch 、 finally 处理异常

     3.1、try..catch

    package com.zhangguo.chapter6.d1;
    
    import java.util.Scanner;
    
    public class Exception1 {
    
        public static void main(String[] args) {
            
            Scanner input=new Scanner(System.in);
            //int i=input.nextInt();
            int i=Integer.parseInt(input.next());
            System.out.println("您输入的是:"+i);
            System.out.println("程序结束了");
        }
    
    }

    异常处理:

    package com.zhangguo.chapter6.d1;
    
    import java.util.Scanner;
    
    public class Exception1 {
    
        public static void main(String[] args) {
    
            try {
                Scanner input = new Scanner(System.in);
                int i = Integer.parseInt(input.next());
                System.out.println("您输入的是:" + i);
            } catch (Exception exp) {
                System.out.println("发生异常了:" + exp.getMessage());
            }
            System.out.println("程序结束了");
        }
    
    }

    结果:

    3.2、try..catch..finally

    finally在任何情况下都将执行,正常时会执行,不正常也会执行

    package com.zhangguo.chapter6.d1;
    
    import java.util.Scanner;
    
    public class Exception1 {
    
        public static void main(String[] args) {
    
            try {
                Scanner input = new Scanner(System.in);
                int i = Integer.parseInt(input.next());
                System.out.println("您输入的是:" + i);
            } catch (Exception exp) {
                System.out.println("发生异常了:" + exp.getMessage());
            }finally {
                System.out.println("输入结束");
            }
            System.out.println("程序结束了");
        }
    
    }

    结果:

    1
    您输入的是:1
    输入结束
    程序结束了

    如果用户输入是的xyz

    四、掌握throw 抛出异常、throws 声明异常

     4.1、java中常用的异常

    //算术异常
    ArithmeticExecption
    
    //空指针异常类
    NullPointerException
    
    //类型强制转换异常
    ClassCastException
    
    //数组负下标异常
    NegativeArrayException
    
    //数组下标越界异常
    ArrayIndexOutOfBoundsException
    
    //违背安全原则异常
    SecturityException
    
    //文件已结束异常
    EOFException
    
    //文件未找到异常
    FileNotFoundException
    
    //字符串转换为数字异常
    NumberFormatException
    
    //操作数据库异常
    SQLException
    
    //输入输出异常
    IOException
    
    //方法未找到异常
    NoSuchMethodException
    
    //抽象方法错误,当应用试图调用抽象方法时抛出
     java.lang.AbstractMethodError
    
    //断言错误,用来指示一个断言失败的情况
    java.lang.AssertionError
    
    //类循环依赖错误,若检测到类之间循环依赖则抛出该异常
    java.lang.ClassCircularityError
    
    //类格式错误
    java.lang.ClassFormatError
    
    //错误基类,标识严重程序运行问题,不应被应用程序捕获的反常情况
    java.lang.Error
    
    //非法访问错误,违反域或方法的可见性声明
    java.lang.IllegalAccessError
    
    //不兼容的类变化错误,当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常
    java.lang.IncompatibleClassChangeError
    
    //实例化错误,构造一个抽象类或者接口时抛出该异常
    java.lang.InstantiationError
    
    //内部错误
    java.lang.InternalError
    
    //链接错误
    java.lang.LinkageError
    
    //未找到类定义错误,找不到该类的定义时抛出该错误
    java.lang.NoClassDefFoundError
    
    //域(成员变量,字段)不存在错误
    java.lang.NoSuchFieldError
    
    //方法不存在错误
    java.lang.NoSuchMethodError
    
    //内存不足错误
    java.lang.OutOfMemoryError
    
    //堆栈溢出错误,如递归调用的层次太深
    java.lang.StackOverflowError
    
    //线程已结束
    java.lang.ThreadDeath
    
    //未知错误
    java.lang.UnknownError
    
    //未满足的链接错误
    java.lang.UnsatisfiedLinkError
    
    //不支持的类版本错误
    java.lang.UnsupportedClassVersionError
    
    //验证错误
    java.lang.VerifyError
    
    //虚拟机错误
    java.lang.VirtualMachineError
    
    //算术条件异常,如整数除零
    java.lang.ArithmeticException
    
    //数组索引越界异常
    java.lang.ArrayIndexOutOfBoundsException
    
    //数组存储异常,存放非数组声明类型
    java.lang.ArrayStoreException
    
    //类型转换异常
    java.lang.ClassCastException
    
    //找不到类异常
    java.lang.ClassNotFoundException
    
    //克隆不支持异常,如没有实现Cloneable接口
    java.lang.CloneNotSupportedException
    
    //枚举常量不存在异常
    java.lang.EnumConstantNotPresentException
    
    //根异常
    java.lang.Exception
    
    //非法访问异常
    java.lang.IllegalAccessException
    
    //非法的监控状态异常
    java.lang.IllegalMonitorStateException
    
    //非法的状态异常
    java.lang.IllegalStateException
    
    //非法的线程状态异常
    java.lang.IllegalThreadStateException
    
    //索引越界异常
    java.lang.IndexOutOfBoundsException
    
    //实例化异常
    java.lang.InstantiationException
    
    //被中断异常
    java.lang.InterruptedException
    
    //数组大小为负值异常
    java.lang.NegativeArraySizeException
    
    //属性不存在异常,当访问某个类的不存在的属性时抛出该异常
    java.lang.NoSuchFieldException
    
    //方法不存在异常
    java.lang.NoSuchMethodException
    
    //空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常
    java.lang.NullPointerException
    
    //数字格式异常
    java.lang.NumberFormatException
    
    //运行时异常
    java.lang.RuntimeException
    
    //安全异常
    java.lang.SecurityException
    
    //字符串索引越界异常
    java.lang.StringIndexOutOfBoundsException
    
    //类型不存在异常
    java.lang.TypeNotPresentException
    
    //不支持的方法异常
    java.lang.UnsupportedOperationException
    
    //Jsp页面异常
    javax.servlet.jsp.JspException
    
    //JSP引擎解析异常
    org.apache.jasper.JasperException
    
    //Servlet异常
    javax.servlet.ServletException
    
    //对象已被删除异常
    org.hibernate.ObjectDeletedException
    常用的异常

     

    4.2、throw..throws

    package com.zhangguo.chapter6.d1;
    
    public class Exception2 {
    
        public static void main(String[] args) {
            
            try {
                System.out.println(div(30,3));
            } catch (Exception e) {
                //输出异常的堆栈信息
                e.printStackTrace();
            }
            
            try {
                System.out.println(div(3,0));
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
            
        }
        
        //throws 声明方法将可能抛出异常
        public static int div(int n1,int n2) throws Exception{
            if(n2==0){
                //抛出异常
                throw new Exception("除数不能为零");
            }
            return n1/n2;
        }
    
    }

    运行结果:

    五、掌握自定义异常

     

    public class ArithmeticException extends RuntimeException {
        private static final long serialVersionUID = 2256477558314496007L;
    
        /**
         * Constructs an {@code ArithmeticException} with no detail
         * message.
         */
        public ArithmeticException() {
            super();
        }
    
        /**
         * Constructs an {@code ArithmeticException} with the specified
         * detail message.
         *
         * @param   s   the detail message.
         */
        public ArithmeticException(String s) {
            super(s);
        }
    }

     

     

     

     

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-1 06:58 , Processed in 0.056917 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表