1.自定义异常
基本概念
当程序中出现某些错误,但该错误信息并没有在Throwable子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息
步骤
- 定义类:自定义异常类名(自己命名)继承Exception或RuntimeException
- 如果继承Exception 属于编译异常
- 如果继承RuntimeException 属于运行异常(一般来说 继承RuntimeException)
package com.logic.customexception_;
import java.util.Scanner;
/**
* @author logic
* @version 1.0
*/
public class CustomException {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年龄: ");
int age = scanner.nextInt();
//范围在20-120之间 否则抛出一个异常
if (!(age >= 20 && age <= 120)) {
//通过构造器设置信息
throw new AgeException("年龄需要在18-120之间");
}
System.out.println("年龄范围正确");
}
}
//一般情况下 自定义异常是继承RuntimeException
//好处是 我们可以使用默认处理机制 比较方便
class AgeException extends RuntimeException {
public AgeException(String message) {
super(message);
}
}
2.throws和throw区别

3.练习
package com.logic;
import java.util.Scanner;
/**
* @author logic
* @version 1.0
*/
/*编写应用程序EcmDef.java,接收命令行的两个参数(整数),计算两数相除。
计算两个数相除,要求使用方法 cal(int n1,int n2)
对数据格式不正确、缺少命令行参数、除0 进行异常处理。
*/
public class Homework01 {
public static double cal(int n1, int n2) {
return n1 / n2;
}
public static void main(String[] args) {
//先判断是否为两个数
try {
if (args.length != 2) {
throw new ArrayIndexOutOfBoundsException("参数个数不对 需要输入两个数");
}
int n1 = Integer.parseInt(args[0]);
int n2 = Integer.parseInt(args[1]);
double res = cal(n1, n2);
System.out.println("res = " + res);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(e.getMessage());
} catch (NumberFormatException e) {
System.out.println("参数格式不正确,需要输入整数");
} catch (ArithmeticException e) {
System.out.println("出现了除以0异常");
}
}
}
1659

被折叠的 条评论
为什么被折叠?



