Java基础笔记41——自定义异常类
自定义异常类步骤:
1.自定义异常类要继承Exception
2.提供一个带参数的构造函数
例子:
MyException.java:
package com.lqh.chapter06; public class MyException extends Exception { //用于保存异常发生的原因 String message; public MyException(String message) { this.message = message; } //访问器方法,用来获取异常的信息 public String getMessage() { return message; } }
_42MyException.java:
package com.lqh.chapter06; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; public class _42MyException { // 告诉调用方法的人,该方法可能存在某类异常 public static void throwMyException() throws MyException { // 1.文件找不到 try { FileInputStream input = new FileInputStream(new File("nihao.txt")); // 2.空指针异常 String str = null; System.out.println(str.length()); // 3.数组下标越界异常 int[] list = new int[] { 1, 2, 3, 4, 5 }; for (int i = 0; i <= list.length; i++) { System.out.println(list[i]); } // 4.算数异常 int num = 1 / 0; } // 1.负责捕获“文件找不到”异常 catch (FileNotFoundException e) { throw new MyException("MyException提示的错误:文件找不到"); } // 2.负责捕获“空指针”异常 catch (NullPointerException e) { throw new MyException("MyException提示的错误:空指针"); } // 3.负责捕获“数组下表越界异常” catch (ArrayIndexOutOfBoundsException e) { throw new MyException("MyException提示的错误:数组下表越界异常"); } // 4.负责捕获“算数异常” catch (ArithmeticException e) { throw new MyException("MyException提示的错误:算数异常"); } } public static void main(String[] args) { try { throwMyException(); } catch (MyException e) { e.printStackTrace(); System.out.println(e.getMessage());//调用自定义异常类的方法 } } }
练习:
编写一个检查给定的数字的数据类型是否为byte的程序,如果此数字超出byte数据类型表示的数的范围,则引发用户自定义的异常ByteSizeException,并显示相应的错误信息(知识点:自定义异常) [选作题]
步骤1:创建用户自定义异常类ByteException
步骤2:在main方法中编写逻辑代码
步骤3:运行并测试
package com.lqh.chapter06; import java.util.Scanner; public class Test { public static void main(String[] args) throws ByteException { System.out.println("请输入一个数"); Scanner in = new Scanner(System.in); int num = in.nextInt(); if (num < Byte.MIN_VALUE || num > Byte.MAX_VALUE) { throw new ByteException("输入的数字不是byte类型"); } else { System.out.println("输入的数字是byte类型"); } } } class ByteException extends Exception { private String message; public ByteException(String message) { this.message = message; } public String getMessage() { return this.message; } }