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 }

运行效果如下:

时间: 2024-10-27 00:50:31

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

Java基础知识强化之IO流笔记66:Properties的概述 和 使用(作为Map集合使用)

1. Properties的概述  Properties:属性集合类.是一个可以和IO流相结合使用的集合类.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串. Properties是Hashtable的子类,说明是一个Map集合. 2. Properties作为Map集合使用 1 package cn.itcast_08; 2 3 import java.util.Properties; 4 import java.util.Set; 5 6 /* 7 *

Java基础知识强化之IO流笔记17:FileOutputStream构造方法使用

1. 可以参照之前写的笔记:   Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流) 2. FileOutputStream(常用的)构造方法: FileOutputStream(File file)           Constructs a new FileOutputStream on the File file. FileOutputStream(String filename)           Constructs a new FileO

Java基础知识强化之IO流笔记16:IO流的概述和分类

1. IO流的分类   流向:     (1)输入流:读取数据到内存     (2)输出流:写入数据到硬盘(磁盘)   操作的数据类型:    (1)字节流:操作的数据是字节                            输入流                            输出流        (2)字符流:操作的数据是字符,为了方便操作文本数据,Java就提供了字符流.                            输入流                      

Java基础知识强化之IO流笔记61:标准输入输出流的本质

1. 标准输入输出流  System类中的两个成员变量: public static final InputStream in :"标准"输入流. public static final PrintStream out :"标准"输出流. 备注: InputStream is = System.in; PrintStream ps = System.out; 代码示例: 1 package cn.itcast_04; 2 3 import java.io.Print

Java基础知识强化之IO流笔记22:FileInputStream / FileOutputStream 复制文本文件案例

1. 使用字节流FileInputStream / FileOutputStream 复制文本文件案例: 分析: (1)数据源:从哪里来 a.txt   --   读取数据  --  FileInputStream (2)目的地:到哪里去 b.txt   --   写数据    --   FileOutputStream 2. 代码示例: 1 package cn.itcast_03; 2 3 import java.io.FileInputStream; 4 import java.io.Fi

Java基础知识强化之IO流笔记68:Properties和IO流集合使用

1. Properties和IO流集合使用 这里的集合必须是Properties集合:  public void load(Reader reader):把文件中的数据读取到集合中  public void store(Writer writer,String comments):把集合中的数据存储到文件 2. 代码实现: 1 package cn.itcast_08; 2 3 import java.io.FileReader; 4 import java.io.FileWriter; 5 i

Java基础知识强化之IO流笔记42:IO流总结(图解)

1. IO流总结(图解)

Java基础知识强化之IO流笔记71:NIO的(New IO流)介绍

1. NIO的(New IO流)介绍     JDK4出现NIO.新IO和传统的IO有相同的目的,都是用于进行输入输出的,但新IO使用了不同的方式来处理输入输出,采用内存映射文件的方式,将文件或者文件的一段区域映射到内存中,就可以像访问内存一样的来访问文件了,这种方式效率比旧IO要高很多,但是目前好多地方我们看到的还是旧IO的引用,所以我们仍以旧IO为主,知道NIO即可.

Java基础知识强化之IO流笔记35:InputStreamReader/OutputStreamWriter 复制文本文件案例01

1. 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中. 数据源:  a.txt -- 读取数据 -- 字符转换流 -- InputStreamReader 目的地:  b.txt -- 写出数据 -- 字符转换流 -- OutputStreamWriter InputStreamReader/OutputStreamWriter不仅是转换流(将字节流转换为字符流),也是字符流Reader/Writer的具体实现子类. 2.代码示例: 1 package cn.itcas