Java 中的异常处理机制
生活中的异常:
不能够完整而顺利的完成一些工作
根据不同的异常进行相应的处理,而不会就此终端我们的生活
引出:
异常处理:
方式:
1.选择结构(逻辑判断)避免
demo:if逻辑处理异常
import java.util.Scanner; public class TestIF { /** * 程序中的异常 * @param 房上的猫 */ public static void main(String[] args) { //处理异常的方式1:if ..逻辑判断 Scanner input=new Scanner(System.in); System.out.print("请输入第一个整数:"); if(input.hasNextInt()==true){ int num1=input.nextInt();//1)输入不是整数类型 2)除法 输入 0 System.out.print("请输入第二个整数:"); int num2=input.nextInt(); if(num2==0){ System.err.println("除数不能为0,程序退出"); System.exit(1);// 退出程序 } else { int jg=num1/num2;//输入num2可能输入 0 System.out.println(jg); } }else { System.err.println("输入的不是整数,程序退出"); System.exit(1); } } }
弊端:
1)代码臃肿
2)程序员要花很大精力“堵漏洞”
3)程序员很难堵住所有漏洞
2.使用异常机制
异常是指程序在运行过程中所发生的不正常的时间,它会中断正在运行的程序
Java编程语言使用异常处理机制为程序提供了错误处理机制
异常处理关键字
捕获异常:
try(试一试):执行可能产生异常的代码
catch(抓住,捕获):捕获异常
finally(最终):无论是否发生异常,代码总能执行
声明异常:
throws(抛出):声明方法可能要抛出的各种异常
抛出异常:
throw(抛出):手动抛出异常
throws声明异常,抛给调用者,调用必须进行try...catch
位置:方法名后面进行 声明异常,多个异常使用逗号隔开
//声明异常,多个异常用逗号隔开
public static void a() throws 异常类型{
//可能出现异常的代码
}
throw:手动抛出异常
throw new Exception("异常");
异常的分类
常见的异常处理类型
使用try-catch-finally处理异常
异常是一种特殊的对象,类型为 java.lang.Exception或其子类
语法:
格式1 :
try{ //可能发生异常的语句 } catch(Exception){ //捕获异常 }finally{ //无论是否有异常,都进入执行 }
执行顺序:
try块 发生异常 产生异常对象
异常类型匹配 进入 catch块
程序继续执行
printStactTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程
ex.getMessage
返回异常信息描述的字符串
ex.printStactTrace();
异常堆栈信息
显示具体异常类型
显示产生异常的具体位置
当异常类型不匹配时,程序之间中断
打印自定义处理信息:
System.err.println(“自定义信息”);
demo:try..catch处理异常
import java.util.InputMismatchException; import java.util.Scanner; public class TestExceptionTry { /** * */ public static void main(String[] args) { try { Scanner input=new Scanner(System.in); System.out.print("请输入第一个整数:"); int num1=input.nextInt();//1)输入不是整数类型 2)除法 输入 0 System.out.print("请输入第二个整数:"); int num2=input.nextInt(); int jg=num1/num2;//输入num2可能输入 0 System.out.println(jg); }catch(ArithmeticException ae){ System.err.println("除数不能为0"+ae.getMessage()); ae.printStackTrace(); }catch(InputMismatchException ae){ System.err.println("输入的不是整数"); System.exit(1); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } } }
(C) 房上的猫 。 保留所有权利。
https://www.cnblogs.com/lsy131479/
如需转载,请注明出处!!!