zoukankan      html  css  js  c++  java
  • Java基础学习之异常处理(6)

    @

    1.异常是什么

    异常就是程序运行中可能会出现的错误,例如文件找不到,网络超时等。
    异常Exception的父类时Throwable,Throwable实现了Serializable可序列化,有两个子类:Error和Exception。

    1.1.Error

    Error错误不是异常,是JVM本身的错误,无法通过代码处理。
    后续的JVM相关文章中会说到,以及一些常见的Error和他们出现的情况,这里不赘述了。

    1.2.Exception

    Exception即异常,程序运行时发生,可通过Java的异常处理机制处理。
    Exception又分为检查性异常和运行时异常。
    检查性异常:强制需要程序员进行处理的异常,例如IOException类。
    运行时异常又称非检查性异常,例如RuntimeException类。

    2.异常处理机制

    Java中异常的处理过程一般是捕获异常再处理。

    2.1.捕获异常

    语法:

    try {
    	//可能会发生异常的代码
    } catch (Exception e) {
    	//异常处理
    } finally {
        //finally子块
    }
    

    catch中的Exception为异常类型,多个catch子块可以捕捉多个异常类型。finally子块无论如何都会执行。
    例如:

    public class TestException {
    	public static void main(String[] args) {
    		try {
                int i = 1/0;
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
            	System.out.println("finally");
            }
    	}
    }
    

    执行结果:

    2.2.抛出异常

    使用关键字throws将异常抛出给运行时系统,由运行时系统处理异常。
    例如:

    public class TestException {
        public static void main(String[] args) {
            try {
                test();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void test() throws Exception{
            int i = 1/0;
        }
    }
    

    执行结果:

    3.自定义异常

    之前有区分异常:

    • 检查性异常:继承Exception类
    • 运行时异常:继承RuntimeException类

    3.1.自定义检查性异常

    例如:网站注册,用户如果年龄低于18报出异常

    public class MyException extends Exception {
        public MyException() {
            super();
        }
    
        public MyException(String msg) {
            super(msg);
        }
    
        public static void main(String[] args) {
            int age;
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入你的年龄:");
            try {
                age = scanner.nextInt();
                if (age < 18) {
                    throw new MyException("你未成年不能注册");
                }
            } catch (MyException e) {
                System.out.println(e.getMessage());
            }
        }
    }
    
    

    执行结果:

    3.2.自定义运行时异常

    例子和上面一样,修改一些内容:

    public class MyException extends RuntimeException {
        public MyException() {
            super();
        }
    
        public MyException(String msg) {
            super(msg);
        }
    
        public static void main(String[] args) {
            int age;
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入你的年龄:");
            age = scanner.nextInt();
            if (age < 18) {
                throw new MyException("你未成年不能注册");
            }
        }
    }
    

    执行结果:

  • 相关阅读:
    [官网]清华大学的开源镜像站点 配置方法
    Android MIFARE NFCA源码解析
    Delphi XE8 TStyleBook的使用
    【FireMonkey】StyleBook使用方法
    Delphi第三方组件安装DCU.PAS.DPK.BPL.ActiveX控件
    M1卡说明及使用proxmark3破解方法
    M1卡修改各区块控制位值和数据
    DICOMDIR
    ZentaoPMS 系统的优先级以及修改
    集成禅道和svn
  • 原文地址:https://www.cnblogs.com/liquorppp/p/13564141.html
Copyright © 2011-2022 走看看