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("你未成年不能注册");
            }
        }
    }
    

    执行结果:

  • 相关阅读:
    js_浏览器对象模型BOM---通过对象来抽象浏览器功能
    js_dom 之事件注册、移除 、pageX
    js组成之dom_dom对象样式操作及运用
    js_组成之DOM_dom对象的注册事件及属性操作
    js_字符串、数组常用方法及应用
    js_内置对象Date Math
    Caffe入门学习(代码实践)
    char和uchar区别
    c/c++中过滤文件路经 后缀
    shell中$(( )) 、 $( ) 、${ }的区别
  • 原文地址:https://www.cnblogs.com/liquorppp/p/13564141.html
Copyright © 2011-2022 走看看