JAVA光头之路(九)--异常

异常的概念

在 Java 中一个异常的产生,主要有如下三种原因:
①Java 内部错误发生异常,Java 虚拟机产生的异常。
②编写的程序代码中的错误所产生的异常,例如空指针异常、数组越界异常等。这种异常称为未检査的异常,一般需要在某些类中集中处理这些异常。
③通过 throw 语句手动生成的异常,这种异常称为检査的异常,一般用来告知该方法的调用者一些必要的信息。

Java 通过面向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,则这个方法会产生代表该异常的一个对象,并把它交给运行时的系统,运行时系统寻找相应的代码来处理这一异常。

我们把生成异常对象,并把它提交给运行时系统的过程称为拋出(throw)异常。运行时系统在方法的调用栈中查找,直到找到能够处理该类型异常的对象,这一个过程称为捕获(catch)异常。

Java 异常强制用户考虑程序的强健性和安全性。异常处理不应用来控制程序的正常流程,其主要作用是捕获程序在运行时发生的异常并进行相应处理。编写代码处理某个方法可能出现的异常,可遵循如下三个原则:
①在当前方法声明中使用 try catch 语句捕获异常。
②一个方法被覆盖时,覆盖它的方法必须拋出相同的异常或异常的子类。
③如果父类抛出多个异常,则覆盖方法必须拋出那些异常的一个子集,而不能拋出新异常。

常见的异常和解决方法

常见的异常:
输入输出异常:IOException
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException(遇到最多的)
类型强制转换异常:ClassCastException
操作数据库异常:SQLException
文件未找到异常:FileNotFoundException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
字符串转换为数字异常:NumberFormatException
字符串转换为数字异常:NumberFormatException

解决方法:
①通过try、catch捕获异常

try{
// 程序代码
}catch(ExceptionName e1){
//Catch 块
}

一个 try 代码块后面跟随多个 catch 代码块的情况就叫多重捕获。

try{
   // 程序代码
}catch(异常类型1 异常的变量名1){
  //Catch 块
}catch(异常类型2 异常的变量名2){
  //Catch 块
}catch(异常类型2 异常的变量名2){
  //Catch 块
}

②通过throws抛出异常
定义一个方法的时候可以使用throws关键字声明。使用throws关键字声明的方法表示此方法不处理异常,谁调用这个方法谁处理。

public class Test {
  public void bug throws Exception {
    throw new Exception();
  }
}

一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。
③finally
finally 关键字用来创建在 try 代码块后面执行的代码块。无论是否发生异常,finally 代码块中的代码总会被执行。

try{
  // 程序代码
}catch(异常类型1 异常的变量名1){
  //Catch 块
}catch(异常类型2 异常的变量名2){
  //Catch 块
}finally{
  // 程序代码
}

想要成为一个合格程序员,必须要有解决bug的能力,这个没啥捷径,解决的多了也就会了,无他,维熟尔。下面是我之前做的笔记。
在这里插入图片描述
今日份:
千山鸟飞绝,万径人踪灭。
孤舟蓑笠翁,独钓寒江雪。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值