Java基础18 异常,Java面试题库
| 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面试题库相关推荐
- Java基础知识——异常Throwable和Exception
Java基础知识--异常Throwable和Exception Java设置了异常,旨在鼓励将方法中可能出现的异常告知给使用此方法的程序员(你和我!).当然了,这种方法是比较优雅的,让我们确切的知道是 ...
- 【CXY】JAVA基础 之 异常概述
概述: 1.异常给初学者的感觉(笔者当时就是这个感觉,不知道其他人是否有共鸣?) 1.异常是个什么东西?理解不了 2.很复杂 3.异常很"简陋",没什么用 4.我保证我写的程序正确 ...
- 【CXY】JAVA基础 之 异常
讲述: 1.五个关键字 1.try:尝试捕获异常,具体的下面讲述 2.catch:当try捕获到异常了,系统会自动生成一个异常信息,这个异常信息就给catch,形象的说我抓住了这个异常. 3.thro ...
- 视频教程-Java基础与实践-Java
Java基础与实践 CSDN高校俱乐部指导老师,程序爱好者,教师,国家认证的软件架构设计师.系统分析师.信息系统项目管理师.软件设计师.网络工程师.本人热衷于计算机软件相关的研发.技术探讨.学习分享和 ...
- java里面value_「Java基础知识」Java中包含哪些运算符
原标题:「Java基础知识」Java中包含哪些运算符 在Java中包含的运算符有:算数运算符,逻辑运算符,关系运算符等. 算数运算符也就是我们平时的加减乘除余等操作:在Java中都是将右边的值赋值给左 ...
- java里面string什么意思_「Java基础知识」Java中的字符串是什么
原标题:「Java基础知识」Java中的字符串是什么 字符串顾名思义就是一些字符组合在一起组成的一串数据,称作字符串,在Java中字符串用双引号包围起来,格式为String string = &quo ...
- 打怪升级之小白的大数据之旅(一)<Java基础语法之Java的身世之谜>
打怪升级之小白的大数据之旅(一) Java基础语法之Java的身世之谜 打怪升级之小白的大数据之旅(一) 前言 一.学习大数据之前 二.Java基础 what? why? how? 总结 前言 做了几 ...
- Java基础2019最新Java面试经典题解析
Java基础2019最新Java面试经典题解析 1简述JVM.JRE.JDK的区别 JVM:java虚拟机 ,加载.class并运行.class JRE:java运行环境除了包含JVM以外还包含了运行 ...
- 《Java基础知识》Java变量的声明、初始化和作用域
<Java基础知识>Java变量的声明.初始化和作用域 一.Java变量的声明 在 Java 程序设计中,每个声明的变量都必须分配一个类型.声明一个变量时,应该先声明变量的类型,随后再声明 ...
- BTA 常问的 Java基础40道常见面试题及详细答案,java初级面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
最新文章
- linux通用中断子系统介绍
- Flask-script
- 题目1208:10进制 VS 2进制(进制转换以及大数保存问题)
- D - Undoubtedly Lucky Numbers CodeForces - 244B(数论 )
- [JS性能优化专篇]
- 监督学习 | 决策树之Sklearn实现
- 娱乐的NBA全明星,成熟的科比,回归的切尔西
- java中printreader类_Java基本字符流输入输出类的使用
- git 修改.gitignore文件 不生效
- 使用ZLIB对datasetProvider.data数据包进行压缩传输的测试
- MySQL取每组的前N条记录
- c语言课后编程题第八章答案,C语言课后编程题答案
- WordPress二次元博客主题模板-Sakurairo v2.5.1.1
- 解决电信光宽带WIFI下手机APP图片加载慢的问题
- SQL入门-连结(JOIN)
- C语言实验——三角形
- 小程序picker三级联动
- 【面经】三七互娱Java游戏研发实习(一面)
- 分析DRAM、NAND FLASH、NOR FLASH三大存储器
- 你知道Java中seriaVersionUID=1L是什么意思吗?
热门文章
- 《测绘管理与法律法规》——测绘质量管理体系
- linux网络编程(一)
- windows无法打开添加打印机_打印机常见故障机及处理方法
- 高频电子线路复习考试题及答案
- 超级计算机卫星云图,台风路径实时发布系统20号台风云图 台风艾莎尼高清卫星云图实时追踪...
- 计算机没有无线网卡驱动程序,win10系统的无线网卡驱动没了的解决方法
- 显卡刷bios改型号_A卡修改BIOS软件/刷显卡BIOS软件
- wap1.x和wap2.0的区别
- 如何选择配置管理工具
- python开源商城_Python 开源网上商城项目