• Java基础知识强化之IO流笔记07:自定义的异常概述和自定义异常实现


    1. 开发的时候往往会出现很多问题(java内部系统框架中没有提供这些异常)

    比如说:考试成绩必须在0~100之间。

    很明显java没有对应的异常,需要我们自己来做一个异常

    (1)继承自Exception(编译期)

    (2)继承自RuntimeException(运行期)

    2. 自定义异常的案例:

    (1)自定义异常MyException继承自Exception,那么MyException属于编译期异常,如下:

     1 package com.himi.myexception;
     2 
     3 /**
     4  * java不可能对所有的情况都考虑到,所以,在实际开发中,我们可能需要自己定义异常
     5  * 而我们随便写的一个类,是不能作为异常类来看的,要想你的类是一个异常类,就必须继承自Exception或者RuntimeException
     6  * 
     7  * 两种方式:
     8  * A:继承Exception
     9  * B:继承RuntimeException
    10  */
    11 
    12 public class MyException extends Exception{
    13 
    14     public MyException() {
    15         // TODO 自动生成的构造函数存根
    16     }
    17     public MyException(String message) {
    18         super(message);
    19     }
    20     
    21 }

    这里MyException构造方法不会写,查看源码,看看其他继承自Exception的异常构造是怎么写的,如下:TimeoutException (编译期异常

     1 public class TimeoutException extends Exception {
     2     private static final long serialVersionUID = 1900926677490660714L;
     3 
     4     /**
     5      * Constructs a {@code TimeoutException} with no specified detail
     6      * message.
     7      */
     8     public TimeoutException() {}
     9 
    10     /**
    11      * Constructs a {@code TimeoutException} with the specified detail
    12      * message.
    13      *
    14      * @param message the detail message
    15      */
    16     public TimeoutException(String message) {
    17         super(message);
    18     }
    19 }

    以后遇到自定义一些属性或者其他不会写,我们要类比Android开源的代码中已经写好的类,查看源码,看看人家是怎么写的,依葫芦画瓢

    (2)Teacher.java如下:

     1 package com.himi.myexception;
     2 
     3 public class Teacher {
     4     public void check (int score) throws MyException {//抛出异常(交给调用者处理)
     5         if(score>100 || score<0) {
     6             throw new MyException("你输入分数不能大于100  或者小于0 ");//这里的MyException是继承自Exception是编译时期异常,必须处理,这里上抛
     7         }else {
     8             System.out.println("你输入的分数是没有问题的");
     9         }
    10     }
    11 
    12 }

    (3)在编译一个测试类,测试逻辑运行情况,如下:

     1 package com.himi.myexception;
     2 
     3 import java.util.Scanner;
     4 
     5 public class StudentDemo {
     6 
     7     public static void main(String[] args) {
     8         Scanner input = new Scanner(System.in);
     9         System.out.println("请输入学生成绩:");
    10         int score  = input.nextInt();
    11         Teacher t = new Teacher();
    12         try {
    13             t.check(score);
    14         } catch (MyException e) {
    15             // TODO 自动生成的 catch 块
    16             e.printStackTrace();
    17         }
    18 
    19     }
    20 
    21 }

    运行效果如下:

  • 相关阅读:
    Python--学习过程
    线程、进程、协程
    socket
    面向对象--进阶
    面向对象--初级
    Python常用的模块
    2019-2020-1 20191301《信息安全专业导论》第十二周学习总结
    wirehark
    2019--2020第十一周信息安全导论论总结20191301
    2019--2020信息安全导论第10周总结20191301
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4844999.html
Copyright © 2020-2023  润新知