| IllegalArgumentException | 错误的参数异常 |

| ArithmeticException | 算术异常 |

| ParseException | 日期解析异常 |

| SQLException | 数据库异常 |

| IOException | 输入输出异常 |

| ClassNotFoundException | 类找不到异常 |

try-catch异常处理

==========================================================================

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

=

异常被处理后,程序可以正常运行

语法:

try{

可能出现异常的代码

}catch(异常类型 ex){

处理异常的代码

}

异常处理过程:

  • 如果try中的代码出现了异常,JVM会自动抛出异常,程序跳转到catch中执行异常处理,处理结束后程序正常执行。

  • 如果try代码中没有异常,try代码执行完,跳过catch执行后面的代码。

异常的常用方法

Exception的方法:

| 方法名 | 作用 |

| — | — |

| void printStackTrace() | 打印堆栈信息 |

| String getMessage() | 获得异常信息 |

| Throwable getCause() | 获得上一级异常 |

多重catch异常处理

=========================================================================

语法:

try{

可能出现异常的代码

}catch(异常类型1 ex){

处理代码1;

}catch(异常类型2 ex){

处理代码2;

}…

异常处理过程:

  • 一旦出现异常,把异常和每个catch块进行匹配,如果匹配成功就执行catch后结束

  • 如果不匹配再判断下一个catch的异常类型。

注意:如果catch中出现其他异常的父类,父类异常必须放在最后

try-catch-finally异常处理

===================================================================================

finally最终的,在finally中的代码无论如何都会执行

程序有部分代码,是必须执行,如:数据库连接关闭、文件流关闭、网络连接的关闭

try{

可能出现异常的代码

}catch(异常类型 ex){

异常处理

}finally{

如论如何都执行的代码

}

异常处理过程:

  • 如果try出现异常,跳转到catch执行处理,最后执行finally代码;

  • 如果try没有异常,try执行完,最后执行finally。

try-catch-finally案例

Scanner input = new Scanner(System.in);

try{

System.out.println(“输入一个数:”);

int num1 = input.nextInt();

System.out.println(“输入一个数:”);

int num2 = input.nextInt();

int result = num1 / num2;

System.out.println("result = " + result);

}catch(ArithmeticException ex){

System.out.println(“出现了算术异常”);

ex.printStackTrace();

}catch(InputMismatchException ex){

System.out.println(“出现了输入格式异常”);

ex.printStackTrace();

}catch(Exception ex){

ex.printStackTrace();

}finally{

System.out.println(“最终执行的代码”);

}

System.out.println(“程序执行完毕~~~”);

throws 和 throw关键字

===============================================================================

throws关键字

用于方法声明异常,一旦方法声明异常,方法中可以不处理异常,由方法的调用者处理。

一般用于非运行时异常。

语法:

public 返回值类型 方法名(参数列表) throws 异常类型1, 异常类型2…{

}

throw关键字

用于手动抛出异常,给调用者进行提示

语法:

if(条件){

throw new 异常类型(“异常描述信息”);

}

练习:输入一个人的年龄,年龄必须在0~100之间,如果超过就抛出IllegalArgumentException异常

/**

  • 输入年龄

  • @throws IllegalArgumentException

*/

static void inputAge() throws IllegalArgumentException{

Scanner input = new Scanner(System.in);

System.out.println(“输入年龄(0~100)”);

int age = input.nextInt();

//手动抛出异常

if(age < 0 || age > 100){

throw new IllegalArgumentException(“年龄必须在0到100之间”);

}

System.out.println(“年龄是”+age);

}

public static void main(String[] args) {

try{

inputAge();

}catch(IllegalArgumentException ex){

ex.printStackTrace();

}

}

自定义异常

===================================================================

在某些特定业务需求下,系统中的异常不能很好处理或表示该业务的问题,可以自定义异常类解决特定业务问题。

如:银行账户取钱时,要判断余额是否足够

实现步骤:

1)定义类继承Exception或其子类

2)满足某些条件时,在方法中用throw抛出异常

3)在声明方法时,用throws声明异常

4)调用方法时,使用try-catch处理异常

/**

  • 余额不足异常

  • @author xray

*/

public class BalanceException extends Exception{

public BalanceException(String msg){

//将异常描述信息传给父类

super(msg);

}

}

/**

  • 银行账户类

  • @author xray

*/

public class BankAccount {

private String name;

private int balance;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getBalance() {

return balance;

}

public void setBalance(int balance) {

this.balance = balance;

}

public BankAccount(String name, int balance) {

super();

this.name = name;

this.balance = balance;

}

public BankAccount() {

super();

}

/**

  • 存钱

  • @param money

Java基础18 异常,Java面试题库相关推荐

  1. Java基础知识——异常Throwable和Exception

    Java基础知识--异常Throwable和Exception Java设置了异常,旨在鼓励将方法中可能出现的异常告知给使用此方法的程序员(你和我!).当然了,这种方法是比较优雅的,让我们确切的知道是 ...

  2. 【CXY】JAVA基础 之 异常概述

    概述: 1.异常给初学者的感觉(笔者当时就是这个感觉,不知道其他人是否有共鸣?) 1.异常是个什么东西?理解不了 2.很复杂 3.异常很"简陋",没什么用 4.我保证我写的程序正确 ...

  3. 【CXY】JAVA基础 之 异常

    讲述: 1.五个关键字 1.try:尝试捕获异常,具体的下面讲述 2.catch:当try捕获到异常了,系统会自动生成一个异常信息,这个异常信息就给catch,形象的说我抓住了这个异常. 3.thro ...

  4. 视频教程-Java基础与实践-Java

    Java基础与实践 CSDN高校俱乐部指导老师,程序爱好者,教师,国家认证的软件架构设计师.系统分析师.信息系统项目管理师.软件设计师.网络工程师.本人热衷于计算机软件相关的研发.技术探讨.学习分享和 ...

  5. java里面value_「Java基础知识」Java中包含哪些运算符

    原标题:「Java基础知识」Java中包含哪些运算符 在Java中包含的运算符有:算数运算符,逻辑运算符,关系运算符等. 算数运算符也就是我们平时的加减乘除余等操作:在Java中都是将右边的值赋值给左 ...

  6. java里面string什么意思_「Java基础知识」Java中的字符串是什么

    原标题:「Java基础知识」Java中的字符串是什么 字符串顾名思义就是一些字符组合在一起组成的一串数据,称作字符串,在Java中字符串用双引号包围起来,格式为String string = &quo ...

  7. 打怪升级之小白的大数据之旅(一)<Java基础语法之Java的身世之谜>

    打怪升级之小白的大数据之旅(一) Java基础语法之Java的身世之谜 打怪升级之小白的大数据之旅(一) 前言 一.学习大数据之前 二.Java基础 what? why? how? 总结 前言 做了几 ...

  8. Java基础2019最新Java面试经典题解析

    Java基础2019最新Java面试经典题解析 1简述JVM.JRE.JDK的区别 JVM:java虚拟机 ,加载.class并运行.class JRE:java运行环境除了包含JVM以外还包含了运行 ...

  9. 《Java基础知识》Java变量的声明、初始化和作用域

    <Java基础知识>Java变量的声明.初始化和作用域 一.Java变量的声明 在 Java 程序设计中,每个声明的变量都必须分配一个类型.声明一个变量时,应该先声明变量的类型,随后再声明 ...

  10. BTA 常问的 Java基础40道常见面试题及详细答案,java初级面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

最新文章

  1. linux通用中断子系统介绍
  2. Flask-script
  3. 题目1208:10进制 VS 2进制(进制转换以及大数保存问题)
  4. D - Undoubtedly Lucky Numbers CodeForces - 244B(数论 )
  5. [JS性能优化专篇]
  6. 监督学习 | 决策树之Sklearn实现
  7. 娱乐的NBA全明星,成熟的科比,回归的切尔西
  8. java中printreader类_Java基本字符流输入输出类的使用
  9. git 修改.gitignore文件 不生效
  10. 使用ZLIB对datasetProvider.data数据包进行压缩传输的测试
  11. MySQL取每组的前N条记录
  12. c语言课后编程题第八章答案,C语言课后编程题答案
  13. WordPress二次元博客主题模板-Sakurairo v2.5.1.1
  14. 解决电信光宽带WIFI下手机APP图片加载慢的问题
  15. SQL入门-连结(JOIN)
  16. C语言实验——三角形
  17. 小程序picker三级联动
  18. 【面经】三七互娱Java游戏研发实习(一面)
  19. 分析DRAM、NAND FLASH、NOR FLASH三大存储器
  20. 你知道Java中seriaVersionUID=1L是什么意思吗?

热门文章

  1. 《测绘管理与法律法规》——测绘质量管理体系
  2. linux网络编程(一)
  3. windows无法打开添加打印机_打印机常见故障机及处理方法
  4. 高频电子线路复习考试题及答案
  5. 超级计算机卫星云图,台风路径实时发布系统20号台风云图 台风艾莎尼高清卫星云图实时追踪...
  6. 计算机没有无线网卡驱动程序,win10系统的无线网卡驱动没了的解决方法
  7. 显卡刷bios改型号_A卡修改BIOS软件/刷显卡BIOS软件
  8. wap1.x和wap2.0的区别
  9. 如何选择配置管理工具
  10. python开源商城_Python 开源网上商城项目