Java基础 9.5
1.异常处理
基本介绍
异常处理就是当异常发生的时候 对异常处理的方式
异常处理方式
try-catch-finally
程序员在代码中捕获发生的异常 自行处理
throws
将发生的异常抛出 交给调用者(方法)处理 最顶级的处理者是JVM
示意图
2.try-catch方式处理异常说明
Java提供try和catch块来处理异常 try块用于包含可能出错的代码 catch块用于处理try块中发生的异常 可以根据需要在程序中有多个try catch块
基本语法
try {可疑代码将异常生成对应的异常对象 传递给catch块
} catch (异常) {对异常处理
}
//如果没有finally 语法可以通过
注意事项
如果异常发生 则异常发生后面的代码不会执行 直接进入到catch块
如果异常没有发生 则顺序执行try代码块 不会进入到catch
如果希望不管是否发生异常 都执行某段代码(比如关闭连接 释放资源等)则使用finally{}
可以有多个catch语句 捕获不同的异常(进行不同的业务处理)要求父类异常在后 子类异常在前 比如(Exception在后 NullPointerException在前)如果发生异常 只会匹配一个catch
可以进行try-finally配合使用 这种做法相当于没有捕获异常 因此程序会崩掉 应用场景:执行一段代码 不管是否发生异常 都必须执行某个业务逻辑
3.小结
如果没有出现异常,则执行try块中所有语句,不执行catch块中语句,如果有finally,最后还需要执行finally里面的语句
如果出现异常,则try块中异常发生后,try块剩下的语句不再执行。将执行catch块中的语句,如果有finally,最后还需要执行finally里面的语句
4.练习
package com.logic.try_;import java.util.Scanner;/*** @author logic* @version 1.0*/
//如果用户输入的不是一个整数,就提示他反复输入,直到输入一个整数为止
public class Homework01 {public static void main(String[] args) {/*1.创建Scanner对象2.使用无限循环 去接收一个数3.将该输入的值 转成一个int4.如果在转换时 抛出异常 说明输入的内容不是一个可以转成int的内容5.如果没有抛出异常 break */Scanner scanner = new Scanner(System.in);int n1 = 0;String inputStr = "";while (true) {System.out.print("请输入一个整数: ");inputStr = scanner.next();System.out.println("输入完毕...");try {n1 = Integer.parseInt(inputStr);break;} catch (NumberFormatException e) {System.out.println("输入有误...");}}System.out.println("你输入的值是: " + n1);}
}