1、异常体系结构:
1.1:定义:
程序在运行期间发生的不正常的情况称之为异常。
1.2:jvm解决异常的方式:
1、终止正在运行程序
2、输出当前异常信息
a、异常的类型 (jdk内部维护了当前异常的一个对象 用当前对象来描述当前出现的异常)
b、异常的原因
c、异常可能出现的行数
|
1.3:程序出现异常列子:
-
package com.shsxt.exception;
-
-
import java.util.Scanner;
-
-
/*
-
* 用户输入两个数 求两个数的商
-
* java.util.InputMismatchException
-
*
-
*
-
*/
-
public class Test02 {
-
-
public static void main(String[] args) {
-
-
-
Scanner input = new Scanner(System.in);
-
System.out.println("请输入被除数---->");
-
int num1 = input.nextInt();
-
System.out.println("请输入除数---->");
-
-
//关闭当前的Scanner
-
input.close();
-
-
-
int num2 = input.nextInt();
-
System.out.println(num1+"/"+num2+"="+(num1/num2));
-
}
-
}
|
报错信息:
二、通过业务逻辑解决异常的方式:
-
package com.shsxt.exception;
-
-
import java.util.Scanner;
-
-
/*
-
* 手动解决异常问题
-
*
-
* 通过大量的if判断解决程序在执行过程中可能出现的异常情况。
-
* 优势:确实可以将异常信息不交由jvm解决 显示更友好的提示信息
-
* 劣势:编写的代码量太大了 而且后期不利于维护 并且程序员永远不知道用户有哪些输入
-
*
-
*
-
*
-
*
-
*/
-
public class Test03 {
-
public static void main(String[] args) {
-
-
Scanner input = new Scanner(System.in);
-
System.out.println("请输入被除数---->");
-
-
//判定一次用户输入的值是不是我们需要的
-
if(input.hasNextInt()){//下一次获取到的值是否是一个int值 如果是返回true 如果不是返回fasle
-
int num1 = input.nextInt();
-
System.out.println("请输入除数---->");
-
//判定用户输入
-
if(input.hasNextInt()){
-
int num2 = input.nextInt();
-
if(num2!=0){
-
System.out.println(num1+"/"+num2+"="+(num1/num2));
-
}else{
-
System.out.println("除数不能为0");
-
}
-
}else{
-
System.out.println("用户输入除数有误");
-
}
-
}else{
-
System.out.println("用户输入逇被除数有误");
-
}
-
}
-
}
|
PS:注意:
-
通过大量的if判断解决程序在执行过程中可能出现的异常情况。
-
* 优势:确实可以将异常信息不交由jvm解决 显示更友好的提示信息
* 劣势:编写的代码量太大了 而且后期不利于维护 并且程序员永远不知道用户有哪些输入
|
更多关于java异常情况及处理机制,请阅读上海尚学堂《java异常与其处理机制》