异常(try……catch……finally、throws和throw的区别、自定义异常)
一、什么是异常
什么是异常?
认识异常:导致程序中断执行的。
例如我们编写了一个除法程序,除数是不可以为0的,但是我们一开始没有做这个规定,如果执行的过程中出现了0,那么程序就会异常结束。
二、try……catch和finally
出现异常的语句要怎么处理?
我们使用try……catch和finally语句对出现异常的语句进行处理。finally不是必要的,因为程序出现异常会中断执行,如果想继续执行异常下面的代码就需要放入finally语句中,这样才会执行剩下的语句。
格式如下:
try{
//可能出现异常的语句
}catch(Exception e){//Exception 代表着catch可以接收的参数类型
//对异常的处理
//return;
}finally{
//这是无论是否出现异常都会执行的代码,即使上面注释的return语句结束了该方法,finally代码块还是会运行
}
三、throws、throw关键字
throws关键字作用:定义方法时声明该方法不处理异常,抛给调用者处理。
就是说你写了一个有异常的方法,但是你没有对这个方法进行处理,而是用throws关键字将该方法标出来,就像是在对调用他的人说:这是个有异常的方法,你需要处理。
throws关键字的格式
public void 方法名( ) throws Exception{
//有异常的代码块
}
例如你在主方法中调用了一个呗throws声明的方法,你有两个选择:
①、要么对其进行处理
②、要么继续使用throws抛出(如果抛出,这样程序可以执行,但是一旦出现异常,程序就会终止)。
throw关键字:
throws是说有这种可能发生(例如除数为0),但执行throw则一定抛出了某种异常。
throw抛出异常的时候是直接抛出实例化对象
try {
throw new Exception("实例化异常");
} catch (Exception a) {
System.out.println(a);
}
该段代码的结果是:java.lang.Exception: 实例化异常
四、自定义异常
自定义异常必须是继承自Exception或者其子类。
若无特殊要求,自定义异常只需要继承Exception类,构造方法中只需要使用super()语句调用Exception的构造方法即可。
//自定义一个异常类
class zidingyi extends Exception{
public zidingyi () {
super();
}
public zidingyi (String a) {
super(a);
}
}
//测试类
public class Test04 {
public static void main(String[] args) {
try {
int result =divide(4,-2);
System.out.println(result);
} catch (zidingyi e) { //对捕获的异常进行处理
System.out.println(e.getMessage()); //打印捕获到的异常信息
}
}
//自定义异常的方法,使用throws关键字抛出
public static int divide(int x,int y) throws zidingyi {
if (y<0) {
//使用throw关键字抛出实例对象
throw new zidingyi("被除数是负数");
}
int result=x/y;//记录结果
return result;//返回结果
}
}
上一篇: 获取日期前一天,字符串转时间戳
推荐阅读
-
C#异常处理中try和catch语句及finally语句的用法示例
-
Java13-day04【Integer、int和String的相转、自动装箱和拆箱、Date、SimpleDateFormat、Calendar、异常、try...catch、throws】
-
异常类的了解、异常的处理方案、编译时期异常和运行时期异常区别、throws和throw的区别、自定义异常类 、捕获异常的标准格式、final、finally、finalize的区别
-
try-catch和throw,throws的区别
-
自定义异常和throw、throws的使用
-
try catch和Throws处理异常的区别
-
try-catch和throw,throws的区别
-
详述自定义异常类与throw和throws的区别
-
JAVA--异常基础介绍 try-catch-finally和throws基础讲解
-
C#异常处理中try和catch语句及finally语句的用法示例