Java基础18 异常

异常处理过程:

  • 一旦出现异常,把异常和每个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

*/

public void saveMoney(int money){

this.balance += money;

System.out.println(“账户”+name+“的余额是”+balance);

}

/**

  • 取钱

  • @param money

  • @throws BalanceException

*/

public void takeMoney(int money) throws BalanceException{

//如果余额不足,就抛出自定义异常

if(balance < money){

throw new BalanceException(“对不起,您账户余额不足”);

}

this.balance -= money;

System.out.println(“账户”+name+“的余额是”+balance);

}

}

public class TestBank {

@Test

总结

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家

在这里插入图片描述

在这里插入图片描述

义异常

if(balance < money){

throw new BalanceException(“对不起,您账户余额不足”);

}

this.balance -= money;

System.out.println(“账户”+name+“的余额是”+balance);

}

}

public class TestBank {

@Test

总结

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家

[外链图片转存中…(img-yYVZJiDk-1714349785144)]

[外链图片转存中…(img-bLeFYYnL-1714349785145)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 26
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值